c语言cJson数组生成与解析

Posted Yueers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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","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数组生成与解析的主要内容,如果未能解决你的问题,请参考以下文章

【Lua】cjson解析null

(转)使用 CJSON 在C语言中进行 JSON 的创建和解析的实例讲解

cJSON 源码分析

JSON数据格式C语言解析库(cJSON)的使用&在STM32上移植和使用

C语言调用cJSON库解析json

C语言调用cJSON库解析json