码迷,mamicode.com
首页 > 编程语言 > 详细

c语言cJson数组生成与解析

时间:2017-08-30 17:36:37      阅读:763      评论:0      收藏:0      [点我收藏+]

标签:size   blog   val   ejs   pre   array   cjson   tar   取出   

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","000002");      /* 给对象增加内容 */                   
   cJSON_AddStringToObject(pJsonsub, "SRC_SYS","UBPS");                                        
   cJSON_AddStringToObject(pJsonsub, "CUST_OAC_BRANCH_NO","120101");                                                         
   cJSON_AddStringToObject(pJsonsub, "ROLE","3");                 
   cJSON_AddStringToObject(pJsonsub, "IPSN_NO","1");                                            
   
   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=0;
  if(NULL == strJson)
  {
        return -1;
  }
  pJson = cJSON_Parse(strJson);  /* 解析 json 放入 pJson*/
  if(NULL == pJson)
  {
    return -1;
  }
  printf("传入=%s\n",cJSON_Print(pJson));
  
  iCount = cJSON_GetArraySize(pJson); /*获取数组长度*/
  
  printf("iCount=[%d]\n",iCount);
  
  pSub = cJSON_GetArrayItem(pJson,0);  /*目前按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 0;
}

 

结果类似如下:

生成:

[{
"PROV_BRANCH_NO": "000002",
"SRC_SYS": "UBPS",
}]

解析:

[{
"RelCode": "已有客户!",
"PROV_BRANCH_NO": "000002",
"SRC_SYS": "UBPS",
}]

 

c语言cJson数组生成与解析

标签:size   blog   val   ejs   pre   array   cjson   tar   取出   

原文地址:http://www.cnblogs.com/yueers/p/7454199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!