1

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..

Sled
  • 18,541
  • 27
  • 119
  • 168
indra
  • 832
  • 4
  • 17
  • 33
  • Try using `cJSON *array = cJSON_GetObjectItem(json,"types")` to get the array. – ooga Apr 29 '14 at 16:15
  • 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 Apr 30 '14 at 04:25
  • http://www.ganimede.ro/help/abljson/files/jsonParser-p.html#getStringValue – ooga Apr 30 '14 at 04:56

2 Answers2

2

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
mco
  • 83
  • 7
1

I think JSON element should respect key:value format.

{ 
 "name": "Jack", 
  "types":[{"type" : 23}, {"type" : 56}, {"type":78}],
 "format": {
 "type": "rect",
  "width": 1920, } 
}
lxgeek
  • 1,732
  • 2
  • 22
  • 33