博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cJSON使用
阅读量:4879 次
发布时间:2019-06-11

本文共 1581 字,大约阅读时间需要 5 分钟。

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参数,否则编译会报错

结果如下:

 

转载于:https://www.cnblogs.com/nanqiang/p/6735025.html

你可能感兴趣的文章
MAC sublime text 无法自动补齐标签
查看>>
NgBook留言本开发全过程(1)
查看>>
LeetCode-指针法
查看>>
Python之路,Day12 - 那就做个堡垒机吧
查看>>
linux之shell之if、while、for语句介绍
查看>>
Mysql phpStudy升级Mysql版本,流产了怎么办?
查看>>
SQLServer之数据库行锁
查看>>
OFDM仿真
查看>>
浅谈linux内核中内存分配函数
查看>>
走近SpringBoot
查看>>
python程序之profile分析
查看>>
写在读研初期
查看>>
开环增益对负反馈放大电路的影响
查看>>
MySQL-ERROR 2003
查看>>
SQL Server2012-SSIS的包管理和部署
查看>>
JavaScript内置对象
查看>>
如何把js的循环写成异步的
查看>>
ER图是啥?
查看>>
too many include files depth = 1024错误原因
查看>>
HTTP协议详解(三)
查看>>