[技术问答] CJSON 解析JSON示例

[复制链接]
 楼主| lzmm 发表于 2023-4-27 22:52 | 显示全部楼层 |阅读模式
cJSON仅有一个.h文件和.c文件组成的JSON解析器,源码可网上搜索下载

josn:
  1. {
  2.     "data": {
  3.         "signCount": 1
  4.     },
  5.     "signList": [
  6.         {
  7.             "fingerPrint": {
  8.                 "fpPicBase64": "123"
  9.             },
  10.             "page": 1,
  11.             "signName": {
  12.                 "signPicBase64": "base64",
  13.                 "signXML": "xml",
  14.                 "x": 100,
  15.                 "y": 100
  16.             }
  17.         }
  18.     ]
  19. }
  1.     cJSON * root = cJSON_Parse(text);
  2.     if(!root) {
  3.         printf("cJSON_Parse error\n");
  4.         fflush(stdout);
  5.         return -1;
  6.     }
  7.     do{

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

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

  20.         int array_size = cJSON_GetArraySize(signList);
  21.         if(0 == array_size){
  22.             printf("signList empty\n");
  23.             fflush(stdout);
  24.             break;
  25.         }

  26.         for(int i=0; i< array_size; i++)
  27.         {
  28.             cJSON* item = cJSON_GetArrayItem(signList, i);
  29.             if(nullptr == item || cJSON_Object != item->type){
  30.                 printf("item nullptr\n");
  31.                 fflush(stdout);
  32.                 break;
  33.             }
  34.             cJSON *signName = cJSON_GetObjectItem(item,"signName");
  35.             if(nullptr == signName || cJSON_Object != signName->type){
  36.                 printf("signName isn't an Object:%d\n",signName->type);
  37.                 fflush(stdout);
  38.                 break;
  39.             }

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

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

  51.     }while(0);
  52.     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中的数据?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

413

主题

9133

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部