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 ...
随机推荐
- ArrayList 的代码
public class user { private String userName; //类的构造方法 public user (String userName ){ this.userName= ...
- 求最小生成树的kruskal算法
连通无向图有最小生成树,边权从小到大排序,每次尝试加入权最小的边,如果不成圈,就把这边加进去,所有边扫一遍就求出了最小生成树. 判断连通分支用Union-Set(并查集),就是把连通的点看成一个集合, ...
- 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现
目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...
- GIT 身份验证失败问题解决方案,由于修改密码产生的问题
fatal: Authentication failed for 'http:xxxxxxxxxx.git/' 解决方案 1. git config --global user.name " ...
- C/S和B/S的应用的区别
C/S: C是指Client,S是指Server.C/S模式就是指客户端/服务器模式.通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销. ...
- 解决IE浏览器兼容问题的一行代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- git 不能创建分支
git 不能创建分支,如下 fatal: cannot lock ref 'refs/heads/hotfix/aa': 'refs/heads/hotfix' exists; cannot crea ...
- python练习题-day10
1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def fun(*args): sum=0 for i in args: sum+=i return ...
- 引入css的两种方式
摘自:https://www.cnblogs.com/gyjWEB/p/4831646.html 在HTML中引入css的其中的两个方法: 1.如果使用链接式,需要使用如下的语句引入外部css文件: ...
- js高级---本地对象、内置对象、宿主对象
名词参考: 原生对象:也叫内部对象.本地对象.native object 内置对象:Build-in object 宿主对象:host object ECMA-262 定义: 原生对象:独立于宿主环境 ...