xiuos/APP_Framework/lib/cJSON/cJSON_Process.c

86 lines
1.8 KiB
C

#include "cJSON_Process.h"
#include <lwip/sockets.h>
cJSON* cJSON_Data_Init(void)
{
cJSON* cJSON_Root = NULL; //json根节点
cJSON_Root = cJSON_CreateObject(); /*创建项目*/
if(NULL == cJSON_Root)
{
return NULL;
}
cJSON_AddStringToObject(cJSON_Root, NAME, DEFAULT_NAME); /*添加元素 键值对*/
cJSON_AddNumberToObject(cJSON_Root, TEMP_NUM, DEFAULT_TEMP_NUM);
cJSON_AddNumberToObject(cJSON_Root, HUM_NUM, DEFAULT_HUM_NUM);
char* p = cJSON_Print(cJSON_Root); /*p 指向的字符串是json格式的*/
p = NULL;
return cJSON_Root;
}
uint8_t cJSON_Update(const cJSON * const object,const char * const string,void *d)
{
cJSON* node = NULL; //json根节点
node = cJSON_GetObjectItem(object,string);
if(node == NULL)
return 0;
if(cJSON_IsBool(node))
{
int *b = (int*)d;
cJSON_GetObjectItem(object,string)->type = *b ? cJSON_True : cJSON_False;
return 1;
}
else if(cJSON_IsString(node))
{
cJSON_GetObjectItem(object,string)->valuestring = (char*)d;
return 1;
}
else if(cJSON_IsNumber(node))
{
double *num = (double*)d;
cJSON_GetObjectItem(object,string)->valuedouble = (double)*num;
return 1;
}
else
return 1;
}
void Proscess(void* data)
{
cJSON *root,*json_name,*json_temp_num,*json_hum_num;
root = cJSON_Parse((char*)data); //解析成json形式
json_name = cJSON_GetObjectItem( root , NAME); //获取键值内容
json_temp_num = cJSON_GetObjectItem( root , TEMP_NUM );
json_hum_num = cJSON_GetObjectItem( root , HUM_NUM );
lw_print("name:%s\n temp_num:%f\n hum_num:%f\n",
json_name->valuestring,
json_temp_num->valuedouble,
json_hum_num->valuedouble);
cJSON_Delete(root); //释放内存
}