示例#1
0
cJSON *parse_topic_metadata(struct buffer *resp) {
    int i, j, err_code, part_count, part_id, leader_id;
    int replica_count, *replicas, isr_count, *isr;
    char *topic;
    cJSON *topic_obj, *part_obj, *parts;

    topic_obj = cJSON_CreateObject();
    err_code = read_int16_buffer(resp);
    topic = read_short_string_buffer(resp);
    part_count = read_int32_buffer(resp);
    cJSON_AddNumberToObject(topic_obj, "err_code", err_code);
    if (err_code > 0) {
        cJSON_AddStringToObject(topic_obj, "err_msg", err_map[err_code]);
    }
    cJSON_AddStringToObject(topic_obj, "name", topic);

    parts = cJSON_CreateArray();
    cJSON_AddItemToObject(topic_obj, "partitions",parts);
    if (part_count == 0) return topic_obj;

    for(i = 0; i < part_count; i++) {
        part_obj = cJSON_CreateObject();
        err_code = read_int16_buffer(resp);
        part_id = read_int32_buffer(resp);
        leader_id = read_int32_buffer(resp);
        cJSON_AddNumberToObject(part_obj, "err_code", err_code);
        if (err_code > 0) {
            cJSON_AddStringToObject(topic_obj, "err_msg", err_map[err_code]);
        }
        cJSON_AddNumberToObject(part_obj, "part_id", part_id);
        cJSON_AddNumberToObject(part_obj, "leader_id", leader_id);
        replica_count = read_int32_buffer(resp);
        replicas = malloc(replica_count * sizeof(int));
        for (j = 0; j < replica_count; j++) {
            replicas[j] = read_int32_buffer(resp); 
        }
        cJSON_AddItemToObject(part_obj, "replicas", cJSON_CreateIntArray(replicas, replica_count));
        isr_count = read_int32_buffer(resp);
        isr = malloc(isr_count * sizeof(int));
        for (j = 0; j < isr_count; j++) {
            isr[j] = read_int32_buffer(resp); 
        }
        cJSON_AddItemToObject(part_obj, "isr", cJSON_CreateIntArray(replicas, replica_count));
        cJSON_AddItemToArray(parts, part_obj);
        free(replicas);
        free(isr);
    }

    free(topic);
    return topic_obj;
}
示例#2
0
文件: main.c 项目: Inatan/LiacChess
BOARD enviaPosicao(int fromX, int fromY,int toX,int toY,BOARD *Board)
{
    cJSON *jogada;
    cJSON *saida;
    char retorno[10000];
    int tamanho;
    int from[2];
    from[0]=fromX;
    from[1]= fromY;
    int to[2];
    to[0]=toX;
    to[1]=toY;
    jogada= cJSON_CreateObject();
    char *name;


    cJSON_AddItemToObject(jogada, "from", cJSON_CreateIntArray(from,2));
    cJSON_AddItemToObject(jogada, "to", cJSON_CreateIntArray(to,2));
    name=cJSON_Print(jogada);
    if( send(s , name , strlen(name) , 0) < 0)
    {
        puts("Send failed");
        Board= NULL;
        return *Board;
    }
    if((tamanho = recv(s , retorno , 10000 , 0)) == SOCKET_ERROR)
    {
        puts("recv failed");
        Board=NULL;
        return *Board;
    }
    int i;
    retorno[tamanho]='\0';
    saida=cJSON_Parse(retorno);
    name=cJSON_Print(saida);
    Board->whiteInfractions=cJSON_GetObjectItem(saida,"white_infractions")->valueint;
    Board->blackInfractions=cJSON_GetObjectItem(saida,"black_infractions")->valueint;
    Board->fiftymoves=cJSON_GetObjectItem(saida,"50moves")->valueint;
    Board->enpassant[0]=cJSON_GetObjectItem(saida,"enpassant")->valueint;
    Board->enpassant[1]=cJSON_GetObjectItem(saida,"enpassant")->next->valueint;
    Board->draw=cJSON_GetObjectItem(saida,"draw")->valueint;
    Board->badmove=cJSON_GetObjectItem(saida,"bad_move")->valueint;
    Board->winner= cJSON_GetObjectItem(saida,"winner")->valueint;
    for(i=0;i<BOARD_SIZE;i++)
        Board->board[i]=cJSON_GetObjectItem(saida,"board")->valuestring[i];
    Board->whoMoves=cJSON_GetObjectItem(saida,"who_moves")->valueint;
    int whoMoves=Board->whoMoves;
    BoardParser(whoMoves,Board->board);
    return *Board;
}
static void WriteShaderVar(ShaderVar* psVar, cJSON* obj)
{
    cJSON_AddItemToObject(obj, "Name", cJSON_CreateString(psVar->Name));
	if(psVar->haveDefaultValue)
	{
		cJSON_AddItemToObject(obj, "aui32DefaultValues", cJSON_CreateIntArray((int*)psVar->pui32DefaultValues, psVar->ui32Size/4));
	}
    cJSON_AddItemToObject(obj, "ui32StartOffset", cJSON_CreateNumber(psVar->ui32StartOffset));
    cJSON_AddItemToObject(obj, "ui32Size", cJSON_CreateNumber(psVar->ui32Size));
}
示例#4
0
LIBCOUCHBASE_API
char *
lcbvb_save_json(lcbvb_CONFIG *cfg)
{
    unsigned ii;
    char *ret;
    cJSON *tmp = NULL, *nodes = NULL;
    cJSON *root = cJSON_CreateObject();

    if (cfg->dtype == LCBVB_DIST_VBUCKET) {
        tmp = cJSON_CreateString("vbucket");
    } else {
        tmp = cJSON_CreateString("ketama");
    }
    cJSON_AddItemToObject(root, "nodeLocator", tmp);

    if (cfg->buuid) {
        tmp = cJSON_CreateString(cfg->buuid);
        cJSON_AddItemToObject(root, "uuid", tmp);
    }
    if (cfg->revid > -1) {
        tmp = cJSON_CreateNumber(cfg->revid);
        cJSON_AddItemToObject(root, "rev", tmp);
    }
    tmp = cJSON_CreateString(cfg->bname);
    cJSON_AddItemToObject(root, "name", tmp);

    nodes = cJSON_CreateArray();
    cJSON_AddItemToObject(root, "nodesExt", nodes);

    for (ii = 0; ii < cfg->nsrv; ii++) {
        cJSON *sj = cJSON_CreateObject(), *jsvc = cJSON_CreateObject();
        lcbvb_SERVER *srv = cfg->servers + ii;

        tmp = cJSON_CreateString(srv->hostname);
        cJSON_AddItemToObject(sj, "hostname", tmp);
        svcs_to_json(&srv->svc, jsvc, 0);
        svcs_to_json(&srv->svc_ssl, jsvc, 1);

        /* add the services to the server */
        cJSON_AddItemToObject(sj, "services", jsvc);
        cJSON_AddItemToArray(nodes, sj);
    }

    /* Now either add the vbucket or ketama stuff */
    if (cfg->dtype == LCBVB_DIST_VBUCKET) {
        cJSON *vbroot = cJSON_CreateObject();
        cJSON *vbmap = cJSON_CreateArray();

        tmp = cJSON_CreateNumber(cfg->nrepl);
        cJSON_AddItemToObject(vbroot, "numReplicas", tmp);

        for (ii = 0; ii < cfg->nvb; ii++) {
            cJSON *curvb = cJSON_CreateIntArray(
                cfg->vbuckets[ii].servers, cfg->nrepl+1);
            cJSON_AddItemToArray(vbmap, curvb);
        }

        cJSON_AddItemToObject(vbroot, "vBucketMap", vbmap);
        cJSON_AddItemToObject(root, "vBucketServerMap", vbroot);
    }

    ret = cJSON_PrintUnformatted(root);
    cJSON_Delete(root);
    return ret;
}
示例#5
0
void save_presets(int do_update)
{
    char * outputdata;
    int count, i;
    cJSON *root, *userobj, *versionobj, *graphicsobj;
    FILE* f;

    root = cJSON_CreateObject();

    cJSON_AddStringToObject(root, "Powder Toy Preferences", "Don't modify this file unless you know what you're doing. P.S: editing the admin/mod fields in your user info doesn't give you magical powers");

    //User Info
    if(svf_login) {
        cJSON_AddItemToObject(root, "user", userobj=cJSON_CreateObject());
        cJSON_AddStringToObject(userobj, "name", svf_user);
        cJSON_AddStringToObject(userobj, "id", svf_user_id);
        cJSON_AddStringToObject(userobj, "session_id", svf_session_id);
        if(svf_admin) {
            cJSON_AddTrueToObject(userobj, "admin");
            cJSON_AddFalseToObject(userobj, "mod");
        } else if(svf_mod) {
            cJSON_AddFalseToObject(userobj, "admin");
            cJSON_AddTrueToObject(userobj, "mod");
        } else {
            cJSON_AddFalseToObject(userobj, "admin");
            cJSON_AddFalseToObject(userobj, "mod");
        }
    }

    //Version Info
    cJSON_AddItemToObject(root, "version", versionobj=cJSON_CreateObject());
    cJSON_AddNumberToObject(versionobj, "major", SAVE_VERSION);
    cJSON_AddNumberToObject(versionobj, "minor", MINOR_VERSION);
    cJSON_AddNumberToObject(versionobj, "build", BUILD_NUM);
    if(do_update) {
        cJSON_AddTrueToObject(versionobj, "update");
    } else {
        cJSON_AddFalseToObject(versionobj, "update");
    }

    //Display settings
    cJSON_AddItemToObject(root, "graphics", graphicsobj=cJSON_CreateObject());
    cJSON_AddNumberToObject(graphicsobj, "colour", colour_mode);
    count = 0;
    i = 0;
    while(display_modes[i++]) {
        count++;
    }
    cJSON_AddItemToObject(graphicsobj, "display", cJSON_CreateIntArray(display_modes, count));
    count = 0;
    i = 0;
    while(render_modes[i++]) {
        count++;
    }
    cJSON_AddItemToObject(graphicsobj, "render", cJSON_CreateIntArray(render_modes, count));

    //General settings
    cJSON_AddStringToObject(root, "proxy", http_proxy_string);
    cJSON_AddNumberToObject(root, "scale", sdl_scale);

    outputdata = cJSON_Print(root);
    cJSON_Delete(root);

    f = fopen("powder.pref", "wb");
    if(!f)
        return;
    fwrite(outputdata, 1, strlen(outputdata), f);
    fclose(f);
    free(outputdata);
    //Old format, here for reference only
    /*FILE *f=fopen("powder.def", "wb");
    unsigned char sig[4] = {0x50, 0x44, 0x65, 0x68};
    unsigned char tmp = sdl_scale;
    if (!f)
    	return;
    fwrite(sig, 1, 4, f);
    save_string(f, svf_user);
    //save_string(f, svf_pass);
    save_string(f, svf_user_id);
    save_string(f, svf_session_id);
    fwrite(&tmp, 1, 1, f);
    tmp = cmode;
    fwrite(&tmp, 1, 1, f);
    tmp = svf_admin;
    fwrite(&tmp, 1, 1, f);
    tmp = svf_mod;
    fwrite(&tmp, 1, 1, f);
    save_string(f, http_proxy_string);
    tmp = SAVE_VERSION;
    fwrite(&tmp, 1, 1, f);
    tmp = MINOR_VERSION;
    fwrite(&tmp, 1, 1, f);
    tmp = BUILD_NUM;
    fwrite(&tmp, 1, 1, f);
    tmp = do_update;
    fwrite(&tmp, 1, 1, f);
    fclose(f);*/
}
DiagnosticVisualisation::DiagnosticVisualisation(UdpClient *udpClient,
		unsigned int numberParticles, Particle2 *particleTable,
		RoboclawProxy *roboClaw, HokuyoProxy *hokuyo) {

	client = udpClient;
	NumberParticles = numberParticles;
	Particles = particleTable;
	RoboClaw = roboClaw;
	Hokuyo = hokuyo;

	rootJSON = cJSON_CreateObject();
	roboClawJSON = cJSON_CreateObject();
	hokuyoJSON = cJSON_CreateObject();
	particlesJSONTable = cJSON_CreateArray();

	//cJSON_AddItemToObject(rootJSON, "RoboClaw", roboClawJSON);
	cJSON_AddItemToObject(rootJSON, "Hokuyo", hokuyoJSON);
	cJSON_AddItemToObject(rootJSON, "Particles", particlesJSONTable);

	hokuyoJSONAngleTable = cJSON_CreateDoubleArray(Hokuyo->Angles,
			Hokuyo->Length);
	hokuyoJSONDistancesTable = cJSON_CreateIntArray(Hokuyo->Distances,
			Hokuyo->Length);

	cJSON_AddItemToObject(hokuyoJSON, "Angles", hokuyoJSONAngleTable);
	cJSON_AddItemToObject(hokuyoJSON, "Distances", hokuyoJSONDistancesTable);

	cJSON *itemParticle;
	cJSON *tableCalculatedProbability;
	cJSON *tableCalculatedDistances;

	for (unsigned int i = 0; i < NumberParticles; i++) {
		itemParticle = cJSON_CreateObject();

		cJSON_AddNumberToObject(itemParticle, "X", Particles[i].X);
		cJSON_AddNumberToObject(itemParticle, "Y", Particles[i].Y);
		cJSON_AddNumberToObject(itemParticle, "P", Particles[i].P);
		cJSON_AddNumberToObject(itemParticle, "Angle", Particles[i].Angle);

		tableCalculatedProbability = cJSON_CreateDoubleArray(
				Particles[i].CalculatedProbability, Particles[i].Length);

		cJSON_AddItemToObject(itemParticle, "CalculatedProbability",
				tableCalculatedProbability);

		tableCalculatedDistances = cJSON_CreateDoubleArray(
				Particles[i].CalculatedDistances, Particles[i].Length);
		cJSON_AddItemToObject(itemParticle, "CalculatedDistances",
				tableCalculatedDistances);

		cJSON_AddItemToArray(particlesJSONTable, itemParticle);
	}

	/*particlesJSONTable = cJSON_CreateArray();

	 cJSON *itemParticle;
	 for(int i = 0; i < NumberParticles;i++)
	 {
	 itemParticle = cJSON_CreateObject();

	 cJSON_AddNumberToObject(itemParticle,"X",Particles[i].X);


	 cJSON_AddItemToArray(particlesJSONTable,itemParticle);
	 }

	 */

//	cJSON_AddItemToObject(particlesJSON,"Particle",particlesJSONTable);
//(Particles,
//		NumberParticles);
//cJSON_AddNumberToObject(particlesJSON,"X",)
	char * rendered = cJSON_Print(rootJSON);

	printf(rendered);
	fflush(NULL);

	Hokuyo->Distances[0] = 777;
	Hokuyo->Angles[0] = 555;

	Particles[0].X = Particles[0].Angle = 888;

	Particles[0].CalculatedDistances[0] = 0.7777;
	Particles[0].CalculatedProbability[0] = 5000;

	Send();

	rendered = cJSON_Print(rootJSON);

	printf(rendered);
	fflush(NULL);

	//particlesJSONTable = cJSON_CreateArray();

	//cJSON_AddItemToArray()

//

//	cJSON_AddItemToObject(particlesJSON, "X", )

//cJSON_AddNumberToObject()

//cJSON_AddItemToObject(rootJSON,

	/*cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
	 cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject());
	 cJSON_AddStringToObject(fmt, "type", "rect");
	 cJSON_AddNumberToObject(fmt, "width", 1920);
	 cJSON_AddNumberToObject(fmt, "height", 1080);
	 cJSON_AddFalseToObject (fmt, "interlace");
	 cJSON_AddNumberToObject(fmt, "frame rate", 24);

	 {
	 "name": "Jack (\"Bee\") Nimble",
	 "format": {
	 "type":       "rect",
	 "width":      1920,
	 "height":     1080,
	 "interlace":  false,
	 "frame rate": 24
	 }
	 }

	 */
}
示例#7
0
void save_presets(int do_update)
{
	//*/
	int i, count;
	char * outputdata;
	cJSON *root, *userobj, *versionobj, *recobj, *graphicsobj, *hudobj;
	FILE *f = fopen("powder.pref", "wb");
	if(!f)
		return;
	root = cJSON_CreateObject();
	
	cJSON_AddStringToObject(root, "Powder Toy Preferences", "Don't modify this file unless you know what you're doing. P.S: editing the admin/mod fields in your user info doesn't give you magical powers");
	
	//User Info
	if(svf_login){
		cJSON_AddItemToObject(root, "user", userobj=cJSON_CreateObject());
		cJSON_AddStringToObject(userobj, "name", svf_user);
		cJSON_AddStringToObject(userobj, "id", svf_user_id);
		cJSON_AddStringToObject(userobj, "session_id", svf_session_id);
		if(svf_admin){
			cJSON_AddTrueToObject(userobj, "admin");
			cJSON_AddFalseToObject(userobj, "mod");
		} else if(svf_mod){
			cJSON_AddFalseToObject(userobj, "admin");
			cJSON_AddTrueToObject(userobj, "mod");
		} else {
			cJSON_AddFalseToObject(userobj, "admin");
			cJSON_AddFalseToObject(userobj, "mod");
		}
	}
	
	//Version Info
	cJSON_AddItemToObject(root, "version", versionobj=cJSON_CreateObject());
	cJSON_AddNumberToObject(versionobj, "major", SAVE_VERSION);
	cJSON_AddNumberToObject(versionobj, "minor", MINOR_VERSION);
	cJSON_AddNumberToObject(versionobj, "build", BUILD_NUM);
	if(do_update){
		cJSON_AddTrueToObject(versionobj, "update");
	} else {
		cJSON_AddFalseToObject(versionobj, "update");
	}
	
	//Fav Menu/Records
	cJSON_AddItemToObject(root, "records", recobj=cJSON_CreateObject());
	cJSON_AddNumberToObject(recobj, "num elements in menu", locked);
	for (i = 0; i < locked; i++)
	{
		char eltext[128] = "";
		sprintf(eltext,"element %i",i);
		cJSON_AddNumberToObject(recobj, eltext, favMenu[18-i]);
	}
	cJSON_AddNumberToObject(recobj, "Alternate HUD ON", alt_hud);
	cJSON_AddNumberToObject(recobj, "Total Time Played", ((double)currentTime/1000)+((double)totaltime/1000)-((double)totalafktime/1000)-((double)afktime/1000));
	cJSON_AddNumberToObject(recobj, "Average FPS", totalfps/frames);
	cJSON_AddNumberToObject(recobj, "Number of frames", frames);
	cJSON_AddNumberToObject(recobj, "Max FPS", maxfps);
	cJSON_AddNumberToObject(recobj, "Total AFK Time", ((double)totalafktime/1000)+((double)afktime/1000)+((double)prevafktime/1000));
	cJSON_AddNumberToObject(recobj, "Times Played", timesplayed);

	//Display settings
	cJSON_AddItemToObject(root, "graphics", graphicsobj=cJSON_CreateObject());
	cJSON_AddNumberToObject(graphicsobj, "colour", colour_mode);
	count = 0; i = 0; while(display_modes[i++]){ count++; }
	cJSON_AddItemToObject(graphicsobj, "display", cJSON_CreateIntArray(display_modes, count));
	count = 0; i = 0; while(render_modes[i++]){ count++; }
	cJSON_AddItemToObject(graphicsobj, "render", cJSON_CreateIntArray(render_modes, count));
	
	//HUDs
	cJSON_AddItemToObject(root, "HUD", hudobj=cJSON_CreateObject());
	cJSON_AddItemToObject(hudobj, "normal", cJSON_CreateIntArray(hud_normal, HUD_OPTIONS));
	cJSON_AddItemToObject(hudobj, "debug", cJSON_CreateIntArray(hud_debug, HUD_OPTIONS));
	cJSON_AddItemToObject(hudobj, "modnormal", cJSON_CreateIntArray(hud_modnormal, HUD_OPTIONS));
	cJSON_AddItemToObject(hudobj, "moddebug", cJSON_CreateIntArray(hud_moddebug, HUD_OPTIONS));

	//General settings
	cJSON_AddStringToObject(root, "proxy", http_proxy_string);
	cJSON_AddNumberToObject(root, "scale", sdl_scale);
	cJSON_AddNumberToObject(root, "Debug mode", DEBUG_MODE);
	
	outputdata = cJSON_Print(root);
	cJSON_Delete(root);
	
	fwrite(outputdata, 1, strlen(outputdata), f);
	fclose(f);
	free(outputdata);
	//Old format, here for reference only
	/*/FILE *f=fopen("powder.def", "wb");
	unsigned char sig[4] = {0x50, 0x44, 0x65, 0x68};
	unsigned char tmp = sdl_scale;
	if (!f)
		return;
	fwrite(sig, 1, 4, f);
	save_string(f, svf_user);
	//save_string(f, svf_pass);
	save_string(f, svf_user_id);
	save_string(f, svf_session_id);
	fwrite(&tmp, 1, 1, f);
	tmp = cmode;
	fwrite(&tmp, 1, 1, f);
	tmp = svf_admin;
	fwrite(&tmp, 1, 1, f);
	tmp = svf_mod;
	fwrite(&tmp, 1, 1, f);
	save_string(f, http_proxy_string);
	tmp = SAVE_VERSION;
	fwrite(&tmp, 1, 1, f);
	tmp = MINOR_VERSION;
	fwrite(&tmp, 1, 1, f);
	tmp = BUILD_NUM;
	fwrite(&tmp, 1, 1, f);
	tmp = do_update;
	fwrite(&tmp, 1, 1, f);
	fclose(f);
	/*/
}
示例#8
0
cJSON* CHPRepPayloadToJson(OCRepPayload* repData)
{
    cJSON *outJson = cJSON_CreateObject();
    if (outJson == NULL)
    {
        return NULL;
    }

    OCRepPayloadValue* val = repData->values;
    while (val)
    {
        switch (val->type)
        {
            case OCREP_PROP_NULL:
                break;
            case OCREP_PROP_INT:
                OIC_LOG_V(DEBUG, TAG, "%s(int):%d", val->name, (int)val->i);
                cJSON_AddNumberToObject(outJson,val->name,(int)val->i);
                break;
            case OCREP_PROP_DOUBLE:
                OIC_LOG_V(DEBUG, TAG, "%s(double):%f", val->name, val->d);
                cJSON_AddNumberToObject(outJson,val->name,val->d);
                break;
            case OCREP_PROP_BOOL:
                OIC_LOG_V(DEBUG, TAG, "%s(bool):%s", val->name, val->b ? "true" : "false");
                cJSON_AddBoolToObject(outJson,val->name,val->b);
                break;
            case OCREP_PROP_STRING:
                OIC_LOG_V(DEBUG, TAG, "%s(string):%s", val->name, val->str);
                cJSON_AddStringToObject(outJson,val->name,val->str);
                break;
            case OCREP_PROP_OBJECT:
            {
                cJSON *objJson = CHPRepPayloadToJson(val->obj);
                if (objJson != NULL)
                {
                    cJSON_AddItemToObject(outJson,val->name,objJson);
                }
                break;
            }
            case OCREP_PROP_ARRAY:
            {
                unsigned int i = 0;
                int arraySize = (int)val->arr.dimensions[0];
                switch (val->arr.type)
                {
                    case OCREP_PROP_INT:
                        OIC_LOG_V(DEBUG, TAG, "%s(int array)", val->name);
                        if (arraySize > 0)
                        {
                            int castVal[val->arr.dimensions[0]];
                            for (i = 0 ; i < (unsigned int)arraySize ; i++)
                            {
                                castVal[i] = (int)val->arr.iArray[i];
                            }
                            cJSON *array = cJSON_CreateIntArray(castVal,arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_DOUBLE:
                        OIC_LOG_V(DEBUG, TAG, "%s(double array)", val->name);
                        if (arraySize > 0)
                        {
                            cJSON *array = cJSON_CreateDoubleArray(val->arr.dArray,arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_STRING:
                        OIC_LOG_V(DEBUG, TAG, "%s(string array)", val->name);
                        if (arraySize > 0)
                        {
                            cJSON *array = cJSON_CreateStringArray((const char**)val->arr.strArray,
                                                                   arraySize);
                            if (array != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,array);
                            }
                        }
                        break;
                    case OCREP_PROP_OBJECT:
                        if (arraySize > 0)
                        {
                            cJSON *arrayJson = cJSON_CreateArray();
                            for (i = 0 ; i < (unsigned int)arraySize ; i++)
                            {
                                cJSON *objJson = CHPRepPayloadToJson(val->arr.objArray[i]);
                                if (objJson != NULL && arrayJson != NULL)
                                {
                                    cJSON_AddItemToArray(arrayJson, objJson);
                                }
                            }
                            if (arrayJson != NULL)
                            {
                                cJSON_AddItemToObject(outJson,val->name,arrayJson);
                            }
                        }
                        break;
                    case OCREP_PROP_BOOL:
                        //TODO : Not support - cJSON_CreateBoolArray
                        break;
                    default:
                        OIC_LOG_V(ERROR, TAG, "Unknown/unsupported array type: %s", val->name);
                        break;
                }
                break;
            }
            default:
                OIC_LOG_V(ERROR, TAG, "Unknown type: %s", val->name);
                break;
        }
        val = val->next;
    }

    if( repData->values != NULL)
    {
        return outJson;
    }
    else
    {
        cJSON_Delete(outJson);
        return NULL;
    }
}
示例#9
0
void cJSONExt_AddIntArrayToObject(cJSON* object, const char* name, int* vars, int numinarray)
{
    cJSON* jsonarray = cJSON_CreateIntArray( vars, numinarray );
    cJSON_AddItemToObject( object, name, jsonarray );
}
示例#10
-1
/* Create a bunch of objects as demonstration. */
void create_objects()
{
    cJSON *root, *fmt, *img, *thm, *fld; char *out; int i;	/* declare a few. */
                                                            /* Our "days of the week" array: */
    const char *strings[7] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
    /* Our matrix: */
    int numbers[3][3] = { { 0,-1,0 },{ 1,0,0 },{ 0,0,1 } };
    /* Our "gallery" item: */
    int ids[4] = { 116,943,234,38793 };
    /* Our array of "records": */
    struct record fields[2] = {
        { "zip",37.7668,-1.223959e+2,"","SAN FRANCISCO","CA","94107","US" },
        { "zip",37.371991,-1.22026e+2,"","SUNNYVALE","CA","94085","US" } };

    /* Here we construct some JSON standards, from the JSON site. */

    /* Our "Video" datatype: */
    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
    cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject());
    cJSON_AddStringToObject(fmt, "type", "rect");
    cJSON_AddNumberToObject(fmt, "width", 1920);
    cJSON_AddNumberToObject(fmt, "height", 1080);
    cJSON_AddFalseToObject(fmt, "interlace");
    cJSON_AddNumberToObject(fmt, "frame rate", 24);

    out = cJSON_Print(root);	cJSON_Delete(root);	printf("%s\n", out);	free(out);	/* Print to text, Delete the cJSON, print it, release the string. */

                                                                                        /* Our "days of the week" array: */
    root = cJSON_CreateStringArray(strings, 7);

    out = cJSON_Print(root);	cJSON_Delete(root);	printf("%s\n", out);	free(out);

    /* Our matrix: */
    root = cJSON_CreateArray();
    for (i = 0; i<3; i++) cJSON_AddItemToArray(root, cJSON_CreateIntArray(numbers[i], 3));

    /*	cJSON_ReplaceItemInArray(root,1,cJSON_CreateString("Replacement")); */

    out = cJSON_Print(root);	cJSON_Delete(root);	printf("%s\n", out);	free(out);


    /* Our "gallery" item: */
    root = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "Image", img = cJSON_CreateObject());
    cJSON_AddNumberToObject(img, "Width", 800);
    cJSON_AddNumberToObject(img, "Height", 600);
    cJSON_AddStringToObject(img, "Title", "View from 15th Floor");
    cJSON_AddItemToObject(img, "Thumbnail", thm = cJSON_CreateObject());
    cJSON_AddStringToObject(thm, "Url", "http:/*www.example.com/image/481989943");
    cJSON_AddNumberToObject(thm, "Height", 125);
    cJSON_AddStringToObject(thm, "Width", "100");
    cJSON_AddItemToObject(img, "IDs", cJSON_CreateIntArray(ids, 4));

    out = cJSON_Print(root);	cJSON_Delete(root);	printf("%s\n", out);	free(out);

    /* Our array of "records": */

    root = cJSON_CreateArray();
    for (i = 0; i<2; i++)
    {
        cJSON_AddItemToArray(root, fld = cJSON_CreateObject());
        cJSON_AddStringToObject(fld, "precision", fields[i].precision);
        cJSON_AddNumberToObject(fld, "Latitude", fields[i].lat);
        cJSON_AddNumberToObject(fld, "Longitude", fields[i].lon);
        cJSON_AddStringToObject(fld, "Address", fields[i].address);
        cJSON_AddStringToObject(fld, "City", fields[i].city);
        cJSON_AddStringToObject(fld, "State", fields[i].state);
        cJSON_AddStringToObject(fld, "Zip", fields[i].zip);
        cJSON_AddStringToObject(fld, "Country", fields[i].country);
    }

    /*	cJSON_ReplaceItemInObject(cJSON_GetArrayItem(root,1),"City",cJSON_CreateIntArray(ids,4)); */

    out = cJSON_Print(root);	cJSON_Delete(root);	printf("%s\n", out);	free(out);

}