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数组生成与解析的更多相关文章

  1. C语言cJSON库的使用,解析json数据格式

    C语言cJSON库的使用,解析json数据格式 摘自:https://www.cnblogs.com/piaoyang/p/9274925.html 对于c语言来说是没有字典这样的结构的,所以对于解析 ...

  2. C语言实现数据机构链表的基本操作(从键盘输入生成链表、读取数组生成链表)

    利用头插法实现逆置 下面简单介绍一下,算法思想结合图示看 算法思想:"删除"头结点与链表其他结点的原有联系(即将头结点的指针置空),再逐个插入逆置链表的表头(即"头插&q ...

  3. C语言实现顺序表的基本操作(从键盘输入 生成线性表,读txt文件生成线性表和数组生成线性表----三种写法)

    经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1. 线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2. 采用的实现方式:一段地 ...

  4. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  5. 【转载】Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  6. [转]java二维码生成与解析代码实现

    转载地址:点击打开链接 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编码,信息容量大 可容纳多达1850个大 ...

  7. iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  8. Android Json生成及解析实例

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  9. 转:JS中生成和解析JSON

    原文地址:JS中生成和解析JSON 1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name ...

随机推荐

  1. jQuery 中的 39 个技巧【申明:来源于网络】

    jQuery 中的 39 个技巧[申明:来源于网络] 地址:http://blog.csdn.net/zhongqi2513/article/details/53704812?ref=myread

  2. 如何在vscode中调试python scrapy爬虫

    本文环境为 Win10 64bit+VS Code+Python3.6,步骤简单罗列下,此方法可以不用单独建一个Py入口来调用命令行 安装Python,从官网下载,过程略,这里主要注意将python目 ...

  3. MVC的HTTP请求处理过程(IIS应用程序池、CLR线程池)

    主要内容 本文讲解的是:服务器接受Http Request请求之后,是如何进入.Net CLR,从而进一步操作的. 我们大家都知道,IIS必须先接受请求,然后才能有机会进入CLR,但对请求(reque ...

  4. ionic3 创建项目至apk打包全过程教程

    主要流程: 安装node.js  -->  安装jdk  -->  安装AndroidSDK  -->  安装cordova  -->  安装ionic -->  创建项 ...

  5. 简单的可以跑起来的dubbo例子

    原文地址:https://blog.csdn.net/jingyangV587/article/details/78901937 项目结构: maven项目,内部三个module. <?xml ...

  6. bugfree3.0.1-BUG解决方案修改

    该篇内容来自文档“masterBugFree2.pdf”,记录在这里. 1.如何将解决方案改为中文 在\Bugfree\Lang\ZH_CN_UTF-8 \_COMMON.php 文件中做如下修改/* ...

  7. php判断是否为命令行模式

    function is_cli(){ : ; }

  8. 使用Sqlserver事务发布实现数据同步(zhuanqian)

    事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布 ...

  9. python数据结构-如何让字典有序

    如何让字典有序 问题举例: 统计学生的成绩和名次,让其在字典中按排名顺序有序显示,具体格式如下 {'tom':(1, 99), 'lily':(2, 98), 'david':(3, 95)} 说明 ...

  10. svn更新项目之后,项目报错一大堆并且tomcat部署项目时找不到项目

    原因是:svn更新项目以后jdk路劲不对,需要使用自己安装的jdk,即可.具体步骤如下 第一步:右击项目-->Build path-->Configure Build path... 第二 ...