lzmm 发表于 2023-4-27 22:52

CJSON 解析JSON示例

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解析器               

iyoum 发表于 2023-5-7 17:35


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

tpgf 发表于 2023-6-5 12:13

JSON 全称 JavaScript Object Notation,即 JS对象简谱,是一种轻量级的数据格式。

qcliu 发表于 2023-6-5 13:52

cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。

drer 发表于 2023-6-5 14:01

cJSON使用cJSON结构体来表示一个JSON数据,定义在cJSON.h中

coshi 发表于 2023-6-5 14:16

cJSON提供了一个API,可以将整条链表中存放的JSON信息输出到一个字符串中

kxsi 发表于 2023-6-5 15:00

解析JSON数据的过程,其实就是剥离一个一个链表节点(键值对)的过程

wiba 发表于 2023-6-5 15:16

cJSON的所有操作都是基于链表的,所以cJSON在使用过程中大量的使用malloc从堆中分配动态内存的

mmbs 发表于 2023-6-7 13:08

解析JSON的几种办法            

qiufengsd 发表于 2023-6-7 13:16

c语言如何判断一段字符串是否是json格式的

louliana 发表于 2023-6-7 13:22

可以使用c语言获取文件中的json数据

iyoum 发表于 2023-6-7 13:47

json解析失败怎么解决?            

lzbf 发表于 2023-6-7 21:13

简单易用的API不错            

abotomson 发表于 2023-6-10 11:26

解析json,nalloc段错误

pixhw 发表于 2023-6-10 12:14

如何多级解析               

adolphcocker 发表于 2023-6-10 13:00

解析JSON数据变得非常容易。            

jkl21 发表于 2023-6-10 13:09

怎么用C语言获取JSON中的数据?
页: [1] 2 3
查看完整版本: CJSON 解析JSON示例