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 2005性能调优
转自:http://www.cnblogs.com/MR_ke/archive/2010/08/25/1807856.html SQL Server在运行一段时间,随着数据的积累,SQL运行效率会逐步 ...
- ASP.NET Core 2.1 中 ViewResultExecutor 的变化
之前在 ASP.NET Core 2.0 中可以正常运行的代码: var services = HttpContext.RequestServices; var executor = services ...
- Hyper-v带宽限制以及验证工具
最近在做项目的性能测试时,需要模拟网络的带宽来控制文件的上传速度.按照以前的方式方法,我们一般会使用工具 softperfect bandwidth manager 来模拟上下行的带宽. 官网地址 h ...
- Nginx+Tomcat整合的安装与配置(win.linux)
//原帖 http://zyjustin9.iteye.com/blog/2017394 上面是windows系统,linux直接下拉到分割线. 相信很多人都听过nginx,这个小巧的东西慢慢地在吞食 ...
- openERP笔记,自定义开发模块
##目标 OpenERP模块基本结构 使用模块添加额外的字段(Date Required和Rush Order) 扩展视图, 让OpenERP能够显示新的字段 修改用于OpenERP工作流的可用状态 ...
- Memcache&Redis
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.减少数据库读取次数来提高网站速度 先在一台机器安装memcache 然后使用Python 安装pip3 i ...
- Unable to convert MySQL date/time value to System.DateTime问题解决方案
原因:可能是该字段(date/datetime)的值默认缺省值为:0000-00-00/0000-00-00 00:00:00,这样的数据读出来转换成System.DateTime时就会有问题: 解决 ...
- luogu3978 [TJOI2015]概率论
题目链接:洛谷 题目大意:求所有$n$个点的有根二叉树的叶子节点数总和/$n$个点的有根二叉树的个数. 数据范围:$n\leq 10^9$ 生成函数神题!!!!(我只是来水博客的) 首先$n$个点的有 ...
- python练习题-day16
1.用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=["alex","wupeiqi","yuanhao" ...
- XMLHttpRequest请求被劫持
十几个请求中随机一个转到 <html><head><script language="javascript">setTimeout(" ...