打印
[技术问答]

CJSON 解析JSON示例

[复制链接]
11085|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lzmm|  楼主 | 2023-4-27 22:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cJSON仅有一个.h文件和.c文件组成的JSON解析器,源码可网上搜索下载

josn:
{
    "data": {
        "signCount": 1
    },
    "signList": [
        {
            "fingerPrint": {
                "fpPicBase64": "123"
            },
            "page": 1,
            "signName": {
                "signPicBase64": "base64",
                "signXML": "xml",
                "x": 100,
                "y": 100
            }
        }
    ]
}
    cJSON * root = cJSON_Parse(text);
    if(!root) {
        printf("cJSON_Parse error\n");
        fflush(stdout);
        return -1;
    }
    do{

        cJSON *data= cJSON_GetObjectItem(root, "data");
        if(nullptr == data || cJSON_Object != data->type){
            printf("data isn't an Object:%d\n",data->type);
            fflush(stdout);
            break;
        }

        cJSON *signList= cJSON_GetObjectItem(root, "signList");
        if(nullptr == signList || cJSON_Array != signList->type){
            printf("signList isn't a array\n");
            fflush(stdout);
            break;
        }

        int array_size = cJSON_GetArraySize(signList);
        if(0 == array_size){
            printf("signList empty\n");
            fflush(stdout);
            break;
        }

        for(int i=0; i< array_size; i++)
        {
            cJSON* item = cJSON_GetArrayItem(signList, i);
            if(nullptr == item || cJSON_Object != item->type){
                printf("item nullptr\n");
                fflush(stdout);
                break;
            }
            cJSON *signName = cJSON_GetObjectItem(item,"signName");
            if(nullptr == signName || cJSON_Object != signName->type){
                printf("signName isn't an Object:%d\n",signName->type);
                fflush(stdout);
                break;
            }

            cJSON *signPicBase64 = cJSON_GetObjectItem(signName,"signPicBase64");
            if(nullptr != signPicBase64 && cJSON_String == signPicBase64->type && signPicBase64->valuestring){
                printf("signPicBase64:%s\n",signPicBase64->valuestring);
                fflush(stdout);
            }

            cJSON *signXML = cJSON_GetObjectItem(signName,"signXML");
            if(nullptr != signXML && cJSON_String == signXML->type && signPicBase64->valuestring){
                printf("signXML:%s\n",signXML->valuestring);
                fflush(stdout);
            }
        }

    }while(0);
    cJSON_Delete(root);


使用特权

评论回复
沙发
abotomson| | 2023-5-5 22:09 | 只看该作者
如何解析返回的json格式数据              

使用特权

评论回复
板凳
janewood| | 2023-5-5 23:48 | 只看该作者
JSON中数组该如何解析呢?              

使用特权

评论回复
地板
timfordlare| | 2023-5-7 16:00 | 只看该作者
如何编写一个JSON解析器               

使用特权

评论回复
5
iyoum| | 2023-5-7 17:35 | 只看该作者

如何解析key值为动态的JSON数组

使用特权

评论回复
6
tpgf| | 2023-6-5 12:13 | 只看该作者
JSON 全称 JavaScript Object Notation,即 JS对象简谱,是一种轻量级的数据格式。

使用特权

评论回复
7
qcliu| | 2023-6-5 13:52 | 只看该作者
cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。

使用特权

评论回复
8
drer| | 2023-6-5 14:01 | 只看该作者
cJSON使用cJSON结构体来表示一个JSON数据,定义在cJSON.h中

使用特权

评论回复
9
coshi| | 2023-6-5 14:16 | 只看该作者
cJSON提供了一个API,可以将整条链表中存放的JSON信息输出到一个字符串中

使用特权

评论回复
10
kxsi| | 2023-6-5 15:00 | 只看该作者
解析JSON数据的过程,其实就是剥离一个一个链表节点(键值对)的过程

使用特权

评论回复
11
wiba| | 2023-6-5 15:16 | 只看该作者
cJSON的所有操作都是基于链表的,所以cJSON在使用过程中大量的使用malloc从堆中分配动态内存的

使用特权

评论回复
12
mmbs| | 2023-6-7 13:08 | 只看该作者
解析JSON的几种办法              

使用特权

评论回复
13
qiufengsd| | 2023-6-7 13:16 | 只看该作者
c语言如何判断一段字符串是否是json格式的

使用特权

评论回复
14
louliana| | 2023-6-7 13:22 | 只看该作者
可以使用c语言获取文件中的json数据

使用特权

评论回复
15
iyoum| | 2023-6-7 13:47 | 只看该作者
json解析失败怎么解决?              

使用特权

评论回复
16
lzbf| | 2023-6-7 21:13 | 只看该作者
简单易用的API不错              

使用特权

评论回复
17
abotomson| | 2023-6-10 11:26 | 只看该作者
解析json,nalloc段错误

使用特权

评论回复
18
pixhw| | 2023-6-10 12:14 | 只看该作者
如何多级解析               

使用特权

评论回复
19
adolphcocker| | 2023-6-10 13:00 | 只看该作者
解析JSON数据变得非常容易。              

使用特权

评论回复
20
jkl21| | 2023-6-10 13:09 | 只看该作者
怎么用C语言获取JSON中的数据?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

401

主题

8826

帖子

11

粉丝