【cJSON】cJSON 实例
C++ Code
主要函数:
【1】常⽤创建
【创建JSON对象】cJSON *cJSON_CreateObject( void );
【创建JSON数组】cJSON *cJSON_CreateArray( void );
【2】常⽤添加
【向对象中添加对象】voidcJSON_AddItemToObject(cJSON *object, const char  *string,cJSON *item);
【向数组中添加对象】void cJSON_AddItemToArray(cJSON *array, cJSON *item);
【向对象中添加数值】cJSON_AddNumberToObject(object,name,n)
【向对象中添加字符串】 cJSON_AddStringToObject(object,name,s)
⽰例:
#include
#include"cJSON.h"
char  *makeJson()
{
cJSON *pJsonRoot  =  NULL ;
cJSON *pIntArray  =  NULL ;
cJSON *pCommArray =  NULL ;
cJSON *pSubJson  =  NULL ;
char    *p          =  NULL ;
int  intarr[ 5 ] = { 0 ,  1 ,  2 ,  3 ,  4 };  //整数数组
pJsonRoot = cJSON_CreateObject();  //创建JSON对象
if ( NULL  == pJsonRoot)
{
//error happend here
return NULL ;
}
cJSON_AddStringToObject(pJsonRoot,  "hello" ,  "hello world" );  //添加⼀个值为字符串的键值对"hello":"hello world"
cJSON_AddNumberToObject(pJsonRoot,  "number" ,  10010 );        //添加⼀个值为数值的键值对"number": 10010
cJSON_AddBoolToObject(pJsonRoot,  "bool" ,  1 );                //添加⼀个值为布尔的键值对"bool": 1
pSubJson = cJSON_CreateObject();      //创建另⼀个json对象作为⼦对象
if ( NULL  == pSubJson)
{
// create object faild, exit
cJSON_Delete(pJsonRoot);          //删除pJsonRoot 及其⼦对象
return NULL ;
}
cJSON_AddStringToObject(pSubJson,  "subjsonobj" ,  "a sub json string" );  //添加⼀个值为布尔的键值对
cJSON_AddItemToObject(pJsonRoot,  "subobj" , pSubJson);                    //将对象pSubJson添加到pJsonRoot中,成为键值对 "subobj":pSubJson //数值数组
pIntArray = cJSON_CreateIntArray(intarr,  5 );  //为intarr创建⼀个数值数组对象,
cJSON_AddItemToObject(pJsonRoot,  "IntArr" , pIntArray);  //将对象pIntArray添加到pJsonRoot中,
成为键值对 " IntArr ":pIntArray //通⽤数组
pCommArray = cJSON_CreateArray(); //创建数组对象
//cJSON_AddItemToArray(cJSON *array, cJSON *item);//向数组中添加对象
cJSON_AddNumberToObject(pCommArray,  "num" ,  2 );              //向数组中添加数值cJSON_AddNumberToObject(object,name,n)
cJSON_AddStringToObject(pCommArray,  "str" ,  "hopeview" );    //向对象中添加字符串 cJSON_AddStringToObject(object,name,s)
cJSON_AddItemToObject(pJsonRoot,  "pCommArray " , pCommArray);  //将对象pCommArray添加到pJsonRoot中,成为键值对 " pCommArray ":pCommArray    p = cJSON_Print(pJsonRoot);    //json对象转为json字符串⽤于传输
// else use :
// char * p = cJSON_PrintUnformatted(pJsonRoot);
if ( NULL  == p)
json转换对象
{
//convert json list to string faild, exit
//because sub json pSubJson han been add to pJsonRoot, so just delete pJsonRoot, if you also delete pSubJson, it will coredump, and error is : double free        cJSON_Delete(pJsonRoot);  //删除pJsonRoot 及其⼦对象
return NULL ;
}
//free(p);
cJSON_Delete(pJsonRoot);  //释放json对象
printf( "myJson is:%s" ,p);
return  p;                //返回json字符串,注意外⾯⽤完p要记得释放空间。//free(p);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。