cJSON使用

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<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
#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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值