1
votes

First off, this is a very broad question, and it might come across as me asking for the community to write my code for me. That is not my intent, but I am so lost, I don't know how to give enough information.

I am attempting to use the cJSON library, written by Dave Gamble, I found this is very useful to use for my embedded device for JSON parse and composing.

to read in the following JSON array

{ 
 "name": "Jack", 
  "types":[23,56,78],
 "format": {
 "type": "rect",
  "width": 1920, } 
}

.. and parsing the getting the object worked with this method

  cJSON *format = cJSON_GetObjectItem(json,"format");

  int framerate = cJSON_GetObjectItem(format,"width")->valueint; 

but I am not able to parse the key "name" and object simple key value ,

I tried this

  cJSON *array = cJSON_GetArrayItem(json,"types"); 

  int value = cJSON_GetArrayItem(format1,1)->valueint;

but did not work, how to parse the array object and simple key value..

2
Try using cJSON *array = cJSON_GetObjectItem(json,"types") to get the array. - ooga
hi thanks for it , it works ... and how do I read just simple string:value ? in my example I wanna to read "name": "Jack" .. - indra

2 Answers

2
votes

Your json is just fine. You can iterate through array of values in cJSON:

cJSON * array = cJSON_GetObjectItem(json, "types");
for (i = 0 ; i < cJSON_GetArraySize(array) ; i++)
{
    printf("%d ",cJSON_GetArrayItem(array, i)->valueint);
}

will print

23 56 78
1
votes

I think JSON element should respect key:value format.

{ 
 "name": "Jack", 
  "types":[{"type" : 23}, {"type" : 56}, {"type":78}],
 "format": {
 "type": "rect",
  "width": 1920, } 
}