野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7434|回复: 4

[{}]类型的 cjson解析问题

[复制链接]
发表于 2016-11-30 15:04:47 | 显示全部楼层 |阅读模式
{"body":[{"name":"xiaohui","status":100}]}        cJSON *root = cJSON_Parse(s);                if(!root)                 {                        printf("get root faild !\n");                        return -1;                }        js_results = cJSON_GetObjectItem(root, "results");对象里面套数组,数组里面有对象,串口打印出get root faild ![{}]类型 该怎么解析啊?
回复

使用道具 举报

发表于 2016-11-30 15:09:35 | 显示全部楼层
这个你网上找找资料吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-30 16:05:35 | 显示全部楼层
找不到啊
回复

使用道具 举报

发表于 2016-11-30 16:49:08 | 显示全部楼层
先解body对象,再解数组,再解数组里的两个对象。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-30 19:16:21 | 显示全部楼层
Ray 发表于 2016-11-30 16:49
先解body对象,再解数组,再解数组里的两个对象。

这样解析哪里有错吗?结果不对啊                                array_size = cJSON_GetArraySize(js_body);
                                printf("array size is %d\n",array_size);
                        for(i=0; i< array_size; i++)                             
        {
                                        js_loc = cJSON_GetArrayItem(js_body, i);                //&#189;a&#206;&#246;êy×é
                                        if(!js_loc)
                                                {
                                                        //TODO...
                                        }
                                        p = cJSON_PrintUnformatted(js_loc);
                                        root1 = cJSON_Parse(p);                       
                                        if(!root1)
                                                        continue ;
                               

                                                        js_name = cJSON_GetObjectItem(root1, "name");       //&#189;a&#206;&#246;êy×é&#212;a&#203;&#216;
                                                                if(!js_name)
                                                                        {
                                                                                printf("no name!\n");
                                                                                return -1;
                                                                        }       
                                                        printf("name is %s\n",js_name->valuestring);
                                                                       
                                                        js_status = cJSON_GetObjectItem(root1, "status");
                                                                if(!js_status)
                                                                        {
                                                                                printf("no status!\n");
                                                                                return -1;
                                                                        }
                                                        printf("status is %s\n",js_status->valueint);

打印.PNG
解析.PNG
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-2 02:24 , Processed in 0.033180 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表