一段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)