indra
indra

Reputation: 832

parse json arrays using cJSON library

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

Upvotes: 1

Views: 7883

Answers (2)

mco
mco

Reputation: 85

Your json does not respect the key:value format as pointed by @lxgeek. Still, 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

Upvotes: 2

lxgeek
lxgeek

Reputation: 1814

I think JSON element should respect key:value format.

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

Upvotes: 1

Related Questions