使用cJSON库解析json数组

时间:2014-04-29 16:05:21

标签: c json cjson

首先,这是一个非常广泛的问题,当我要求社区为我编写代码时,可能会遇到这个问题。这不是我的意图,但我迷失了,我不知道如何提供足够的信息。

我正在尝试使用由Dave Gamble编写的cJSON库,  我发现这对于我的嵌入式设备用于JSON解析和编写非常有用。

读入以下JSON数组

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

..并解析使用此方法获取对象

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

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

但是我无法解析键“name”和对象简单键值

我试过这个

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

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

但是没有用,如何解析数组对象和简单的键值..

2 个答案:

答案 0 :(得分:1)

我认为JSON元素应该尊重key:value format。

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

答案 1 :(得分:1)

你的json很好。您可以在cJSON中迭代值数组:

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

将打印

23 56 78