C语言项目中使用json

随着物联网的发展,越来越多的物需要连接网络上传数据,服务器同时需要对接多种类型的终端,协议的多样性是加大服务器端复杂度的一个重要方面,同时也加大了维护复杂度,经过权衡终端最终采用了json数据格式。

使用的理由:

1、标准  主流的语言都是支持json,方便 终端和服务器的解析

2、扩展性好

3、易于维护

缺点:

比二进制的数据类型占用的带宽要大


使用方法:

1、下载

https://sourceforge.net/projects/cjson/

官方项目中有测试包 及使用教程


2、将cjson包 包含到项目中   #include "cJSON.h"

3、注意cjson 源文件中的 malloc  和free方法的替换

void cJSON_InitHooks(cJSON_Hooks* hooks)
{
    if (!hooks) { /* Reset hooks */
        cJSON_malloc = vm_malloc;
        cJSON_free = vm_free;
        return;
    }


cJSON_malloc = (hooks->malloc_fn)?hooks->malloc_fn:vm_malloc;
cJSON_free = (hooks->free_fn)?hooks->free_fn:vm_free;

}


我使用的是 vm_malloc  和 vm_free  所以替换成我自己的方法了

4、json转字符串后,在字符串使用完之后要释放  因为char* 是使用malloc创建的内存空间

out = cJSON_Print(root);  或   out = cJSON_PrintUnformatted(root);    在out使用之后 要手动释放  否则会导致内存泄露

5、同理,字符串转json之后 在json使用完后要 调用  cJSON_Delete()释放json对象,因为json数是使用malloc创建的内存空间 如:

json = cJSON_Parse((char*)readBuf);     使用后要  cJSON_Delete(json );


6、常用的函数在网上都能找到  

创建 和 取值



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值