Files
xiuos/APP_Framework/lib/cJSON/cJSON_Process.c
2023-07-13 10:56:50 +08:00

86 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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)
{
lw_print("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>JSON<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
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); //释放内存
}