cJSON测试

一、cJSON的简单应用

1.1    文件结构

cJSON测试_第1张图片

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张图片

你可能感兴趣的:(笔记,c语言,json)