86 lines
1.8 KiB
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); //释放内存
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|