一、cJSON的简单应用
1.1 文件结构
![cJSON测试_第1张图片](http://img.e-com-net.com/image/info8/62f07e7ba6df4d1cad7d5b9d20d60065.jpg)
1.2 C语言测试代码
#include
#include "cJSON.h"
#include "cJSON.c"
typedef struct
{
int id;
char cName[32];
float fValue;
} JsonTest;
JsonTest jsonObject = { 1, "zxl", 0.2f };
JsonTest jsonroot = { 2, "yyy", 555.0 };
void MakeJsonClass()
{
cJSON *object = cJSON_CreateObject(); /* 创建一个cJSON节点,并设置节点类型为cJSON_Object */
char *result; /* 生成的结果 */
cJSON *root = cJSON_CreateObject();
printf( "/***********************生成json**********************/\n" );
cJSON_AddNumberToObject( object, "id", jsonObject.id ); /* 添加数字 */
cJSON_AddStringToObject( object, "name", jsonObject.cName ); /* 添加字符串 */
cJSON_AddNumberToObject( object, "value", jsonObject.fValue ); /* 添加数字 */
cJSON_AddNumberToObject( root, "id", jsonroot.id ); /* 添加数字 */
cJSON_AddStringToObject( root, "name", jsonroot.cName ); /* 添加字符串 */
cJSON_AddNumberToObject( root, "value", jsonroot.fValue ); /* 添加数字 */
cJSON_AddItemToObject( root, "object", object ); /* 添加json文件 */
result = cJSON_Print( root ); /* 打印json内容 */
printf( "生成Json:\n%s\n", result );
}
void GetJson()
{
cJSON *object = cJSON_CreateObject(); /* 创建一个cJSON节点,并设置节点类型为cJSON_Object */
char *result; /* 生成的结果 */
cJSON *root = cJSON_CreateObject();
cJSON *item;
printf( "/***********************解析json**********************\n/" );
root = cJSON_Parse( result ); /* 解析JSON数据,将数据填入JSON树中 */
if ( !root )
{
printf( "Error before: [%s]\n", cJSON_GetErrorPtr() );
return;
}
object = cJSON_GetObjectItem( root, "object" ); /* 获取json节点中的json节点 */
if ( !object )
{
cJSON_Delete( root ); /*删除 */
return;
}
printf( "解析过程:\n" );
item = cJSON_GetObjectItem( object, "id" );
printf( "Item: type=%d, key is %s, valueint=%d\n", item->type, item->string, item->valueint );
jsonObject.id = item->valueint;
item = cJSON_GetObjectItem( object, "name" );
printf( "Item: type=%d, key is %s, valuestring=%s\n", item->type, item->string, item->valuestring );
strcpy( jsonObject.cName, item->valuestring );
item = cJSON_GetObjectItem( object, "value" );
printf( "Item: type=%d, key is %s, valuedouble=%2f\n", item->type, item->string, item->valuedouble );
jsonObject.fValue = item->valuedouble;
/* 解析到rootJson */
item = cJSON_GetObjectItem( root, "id" );
printf( "Item: type=%d, key is %s, valueint=%d\n", item->type, item->string, item->valueint );
jsonroot.id = item->valueint;
item = cJSON_GetObjectItem( root, "name" );
printf( "Item: type=%d, key is %s, valuestring=%s\n", item->type, item->string, item->valuestring );
strcpy( jsonroot.cName, item->valuestring );
item = cJSON_GetObjectItem( root, "value" );
printf( "Item: type=%d, key is %s, valuedouble=%2f\n", item->type, item->string, item->valuedouble );
jsonroot.fValue = item->valuedouble;
printf( "解析结果:\nroot:\n" );
printf( "\n\tid:%d\n\tname:%s\n\tvalue:%2f\n\t\n", jsonroot.id, jsonroot.cName, jsonroot.fValue );
printf( "\tobject:\n\t\tid:%d\n\t\tname:%s\n\t\tvalue:%2f\n", jsonObject.id, jsonObject.cName, jsonObject.fValue );
}
void main()
{
MakeJsonClass();
GetJson();
while ( 1 )
;
}
1.3、运行结果
![cJSON测试_第2张图片](http://img.e-com-net.com/image/info8/11bcd6052386426c96857d6715e947eb.png)