cJSON是使用C语言编写的 关于JSON数据的 编解码库,使用方便简单
编译时注意后面要跟-lm参数,否则编译会报错
解析JSON数据包流程:
1.调用cJSON_Parse()函数,解析JSON数据包,并按照cJSON结构体的结构序列化整个数据包。使用该函数会通过malloc()函数在内存中开辟一个空间,使用完成需要手动释放
cJSON *cJSON_Parse(const char *value)
2. 调用cJSON_GetObjectItem()函数,可从cJSON结构体中查找某个子节点名称(键名称),如果查找成功可把该子节点序列化到cJSON结构体中。
cJSON *cJSON_GetObjectItem(cJSON *object,const char *string)
3.如果需要使用cJSON结构体中的内容,可通过cJSON结构体中的valueint和valuestring取出有价值的内容(即键的值)
4. 通过cJSON_Delete(),释放cJSON_Parse()分配出来的内存空间
void cJSON_Delete(cJSON *c)
下面是一个简单的解析函数例子:
void parseJson(char* pMsg){ cJSON* jsonRoot = cJSON_Parse(pMsg);//转化为JSON结构体,再进行解释 //注释部分格式化打印json数据 // char* out = cJSON_Print(jsonRoot); // printf("%s\n",out); // free(out); cJSON* item = cJSON_GetObjectItem(jsonRoot,"flvpath");//获取键名为"flvpath"的值 printf("\nflvpath type:%d,value:%s\n",item->type,item->valuestring); cJSON_Delete(jsonRoot);}
下面是一段创建JSON数据代码:
#include#include #include #include"cJSON.h"int main() { cJSON * usr; usr=cJSON_CreateObject(); //创建根数据对象 cJSON_AddStringToObject(usr,"name","fengxin"); //加入键值,加字符串 cJSON_AddStringToObject(usr,"passwd","123"); cJSON_AddNumberToObject(usr,"num",1); //加整数 char *out = cJSON_PrintUnformatted(usr); //将json转为字符串形式 char *out1 = cJSON_Print(usr); //将json转为好看的字符串形式 cJSON_Delete(usr); // 释放内存 printf("%s\n",out); printf("%s\n",out1); free(out);// 释放内存 free(out1);// 释放内存}
结合 cJSON.c一起编译即可运行
编译gcc -o test *.c -lm
注意后面要跟-lm参数,否则编译会报错
结果如下: