c语言cJson数组生成与解析
1.生成 json
char* CreatJsCustNo( BT_BNF_CUST *p, char *strPaperNO)
{
cJSON *pJsonArry,*pJsonsub; pJsonArry=cJSON_CreateArray(); /*创建数组*/
cJSON_AddItemToArray(pJsonArry,pJsonsub=cJSON_CreateObject()); /* 给创建的数组增加对对象*/ cJSON_AddStringToObject(pJsonsub, "PROV_BRANCH_NO",""); /* 给对象增加内容 */
cJSON_AddStringToObject(pJsonsub, "SRC_SYS","UBPS");
cJSON_AddStringToObject(pJsonsub, "CUST_OAC_BRANCH_NO","");
cJSON_AddStringToObject(pJsonsub, "ROLE","");
cJSON_AddStringToObject(pJsonsub, "IPSN_NO",""); char * pp = cJSON_Print(pJsonArry); if(NULL == pp)
{
cJSON_Delete(pJsonArry);
return NULL;
}
printf("bbbb\n");
cJSON_Delete(pJsonArry);
return pp;
}
2.解析
int ParseJsCustNo (char *strJson ,BT_BNF_CUST_RESP *p)
{
cJSON * pJson,*pSub,*pSub1 ;
int iCount=;
if(NULL == strJson)
{
return -;
}
pJson = cJSON_Parse(strJson); /* 解析 json 放入 pJson*/
if(NULL == pJson)
{
return -;
}
printf("传入=%s\n",cJSON_Print(pJson)); iCount = cJSON_GetArraySize(pJson); /*获取数组长度*/ printf("iCount=[%d]\n",iCount); pSub = cJSON_GetArrayItem(pJson,); /*目前按1笔处理,取出一笔放入 pSub */ printf("数组里面的内容=%s\n",cJSON_Print(pSub)); pSub1 = cJSON_GetObjectItem(pSub, "PARTY_ID"); if(pSub1 != NULL)
{
printf("---GET:PARTY_ID = [name:[%s]_type:[%d]_value:[%s] ]\n", pSub1->string,pSub1->type,pSub1->valuestring);
strcpy(p->PARTY_ID,pSub1->valuestring );
}
pSub1 = cJSON_GetObjectItem(pSub, "CUST_NO");
if(pSub1 != NULL)
{
printf("---GET:CUST_NO = [name:[%s]_type:[%d]_value:[%s] ]\n", pSub1->string,pSub1->type,pSub1->valuestring);
strcpy(p->CUST_NO,pSub1->valuestring );
}
pSub1 = cJSON_GetObjectItem(pSub, "PROV_BRANCH_NO");
if(pSub1 != NULL)
{
printf("---GET:PROV_BRANCH_NO = [name:[%s]_type:[%d]_value:[%s] ]\n", pSub1->string,pSub1->type,pSub1->valuestring);
strcpy(p->PROV_BRANCH_NO,pSub1->valuestring );
} cJSON_Delete(pJson);
return ;
}
结果类似如下:
生成:
[{
"PROV_BRANCH_NO": "000002",
"SRC_SYS": "UBPS",
}]
解析:
[{
"RelCode": "已有客户!",
"PROV_BRANCH_NO": "000002",
"SRC_SYS": "UBPS",
}]
4.备注
1.创建Json。
/* feeType char 类型*/
cJSON_AddStringToObject(savingAccountFee, "feeType", feeType);
/* feeAmount int/double 类型 */
cJSON_AddNumberToObject(savingAccountFee, "feeAmount", feeAmount);
/*常用赋值函数*/
#define cJSON_AddNullToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())
#define cJSON_AddTrueToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
#define cJSON_AddFalseToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
#define cJSON_AddBoolToObject(object,name,b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
2.解析Json,不同类型,进行解析时,赋值方式。
/* taxDeduct double 类型 */
pLeaf =cJSON_GetObjectItem(pSub1, "taxDeduct");
if(pLeaf != NULL)
{
printf("---GET:taxDeduct = [name:[%s]_type:[%d]_value:[%d] ]\n", pLeaf->string,pLeaf->type,pLeaf->valuedouble);
p->endorsementResult.taxDeduct = pLeaf->valuedouble;
}
/* totalNum int 类型*/
pLeaf = cJSON_GetObjectItem(pSub1, "totalNum");
if(pLeaf != NULL)
{
p->total.totalNum = pLeaf->valueint;
}
/*companyCode char 类型*/
pLeaf = cJSON_GetObjectItem(pSub1, "companyCode");
if(pLeaf != NULL)
{
strcpy(p->total.companyCode , pLeaf->valuestring);
}
c语言cJson数组生成与解析的更多相关文章
- C语言cJSON库的使用,解析json数据格式
C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...
- C语言实现数据机构链表的基本操作(从键盘输入生成链表、读取数组生成链表)
利用头插法实现逆置 下面简单介绍一下,算法思想结合图示看 算法思想:"删除"头结点与链表其他结点的原有联系(即将头结点的指针置空),再逐个插入逆置链表的表头(即"头插&q ...
- C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)
经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...
- Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- 【转载】Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- [转]java二维码生成与解析代码实现
转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1. 高密度编码,信息容量大 可容纳多达1850个大 ...
- iOS开发之JSON格式数据的生成与解析
本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...
- Android Json生成及解析实例
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- 转:JS中生成和解析JSON
原文地址:JS中生成和解析JSON 1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name ...
随机推荐
- 转:sql篇 select from where group by having order by
原文地址: sql篇 select from where group by having order by select from where group by having order by 的基 ...
- VBA语法总结
为了控制Excel,学了些VBA,总结下语法,下文分为五部分: 一.代码组织 二.常用数据类型 三.运算符 四.控制流 五.常用内置函数 一.代码组织 1.能写代码的地方有{模块,类模块}. 2.代码 ...
- SQL SERVER查询的临时文件路径
C:\Users\用户\Documents\SQL Server Management Studio\Backup Files C:\Users\用户\AppData\Local\Temp\
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处(转)
1.声明 本篇转自博客:http://blog.csdn.net/reille/ 2.转载内容 2.1.前言 今天在阅读 Qt Creator 的源代码时,发现一些注释中有 FIXME 英文单词,用英 ...
- Scrapy工作原理
目录 1. Scrapy旧版架构图(绿线是数据流向) 2. Scrapy新版架构图 1. 组件介绍 2. 数据流(Data Flow) 3. 使用Scrapy框架爬虫的重要命令 4. Middlewa ...
- Git环境配置
1,下载Git-2.16.2-64-bit.exe并安装, 全部为默认设置 下载地址:http://git-scm.com/download/win 2 在开始菜单中,单击Git CMD,执行下面命令 ...
- hbase 快速开发
hbase是一个分布式的NoSQL,部署起来配置很多东西,开发起来太慢,可以使用docker快速搭建环境 gs@gs-virtual-machine:~$ sudo docker run -ti ha ...
- C语言进阶之路(一)----C语言的内存四区模型
内存四区模型:操作系统给C/C++编写的程序分配内存,通常将分配的内存划分为以下四个区域:1.栈区:存放局部变量,用完由操作系统自动释放2.堆区:动态分配给程序的内存区域,由程序员手动释放3.数据区: ...
- 框架——flask知识点回顾
1. flask--轻量级Web开发框架 2. Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL 3. Web程序框架的意义: 用于搭建Web应用程序 免去不同Web应用 ...
- 解决IDEA无法安装插件的问题
进入2018年以来,在IDEA插件中心中,安装插件经常安装失败,报连接超时的错误.如下: 我们发现连接IDEA的插件中心使用的是https的链接,我们在浏览器中使用https访问插件中心并不能访问. ...