一段JSON可能是以 ”{“ 开头
也可能仅包含一段JSON数组 如下
[
{ "name" : "hello,world"},
{"name" : "SB JSON”},
{“name” : "SB互联网房地产CNM“},
]
瞧,蛋疼不...CJSON过来还是得搜下网络才知道他又这种格式。
因为CJSON在解析的时候会把数组结成N个 { }。
比如如下
int main(){
char text[]="[{\"name\":\"Tom1\",\"age\":18},{\"name\":\"Tom2\",\"age\":19},{\"name\":\"Tom3\",\"age\":20},{\"name\":\"Tom4\",\"age\":21}]";
cJSON * root = cJSON_Parse(text);
if(!root) {
printf("no json\n");
return -1;
}
if (!cJSON_IsArray(root)){
printf("no Array\n");
return -1;
}
//数组长度
int array_size = cJSON_GetArraySize(root);
cJSON *item;
cJSON *name;
cJSON *age;
for(int i=0; i< array_size; i++) {
item = cJSON_GetArrayItem(root, i);
name = cJSON_GetObjectItem(item, "name");
if (!name) {
printf("no name!\n");
return -1;
}
printf("%s\t",name->valuestring);
age = cJSON_GetObjectItem(item, "age");
if (!age) {
printf("no age!\n");
return -1;
}
printf("%d\n",age->valueint);
}
return 0;
}
cJSON_Delete(root);
附: CJSON作者传送门 当然亦可以直接点击下面的Github链接:https://github.com/DaveGamble/cJSON
还有网友的贴心整理
JSON及CJSON详解笔记_cjson 16进制-CSDN博客
(76 封私信 / 4 条消息) CJSON封包解包详细操作? - 知乎 (zhihu.com)