linux cJson库使用

1、cJSon库的好处

在c语言里用到json格式的字符串,拼接起来就很麻烦,如果数据大,需要申请空间,如果中间要再插入一个子项,还需要麻烦的拷贝拼接。
用cJSon库的好处就是:
1、拼接、插入方便。临时增加,修改,直接用对于的接口来实现,快速,方便。
2、空间申请问题由接口底层去实现。如果拼接很多,内存问题我们不用去过多考虑,只要知道怎么用就可以避免内存泄露问题。
3、格式统一。书写方便,可能有些地方会加中括号,有些没有。用这个可以省掉这种麻烦。
4、使用拓展方便。需要临时增加,或者再加入内容,比较便捷,高效。不用再自己用一大串的转义符加双引号来拼接了。

2、下载库

链接: https://pan.baidu.com/s/1PJp3EqALizUpzDb5xT4loQ
提取码: ye5g
包含测试代码

3、使用

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

int main()
{
    cJSON * root =  cJSON_CreateObject();
    cJSON * item =  cJSON_CreateObject();
    cJSON * sub_item =  cJSON_CreateObject();

    cJSON_AddItemToObject(root, "root", cJSON_CreateNumber(0));//根节点下添加
    cJSON_AddItemToObject(root, "name", cJSON_CreateString("chz"));
    cJSON_AddItemToObject(root, "age", cJSON_CreateString("18"));
    cJSON_AddItemToObject(root, "profession", cJSON_CreateString("programmer"));
    cJSON_AddItemToObject(root, "ability", item);//root节点下添加节点ability
    cJSON_AddItemToObject(item, "sports", sub_item);//在ability节点下添加sports节点
    cJSON_AddItemToObject(sub_item, "baskeball", cJSON_CreateString("Point Guard"));//添加节点
    printf("%s\n", cJSON_Print(root));
    printf("%s\n", cJSON_PrintUnformatted(root));

    return 0;
}

有添加子节点就有删除子节点,还有对应的更改子节点。

CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);

仔细阅读一下cJSon.h文件。
github上面也有未编译版的cJson,可以自行下载看看
https://github.com/DaveGamble/cJSON

4、简单性能测试

一直在担心不断地添加子项会不会加大内存开销。于是做了个小实验。
每隔1秒去添加,然后top 查看mem项是否加大。几分钟后发现mem增大到1.3!
所以要特别注意使用cJSON_AddItemToObject

测试代码从百度网盘下载
那该怎么优化?
每次添加一个Item前先delete掉一个。或者就直接采用cJSON_ReplaceItemInObject这个函数来替换!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cJSON是一个用于在C语言中操作JSON数据的开发。您可以通过在Linux系统上编译和安装cJSON使用它。以下是使用cJSON创建和操作JSON数据的示例代码: ```c #include <stdio.h> #include "cJSON.h" int main() { cJSON *root = cJSON_CreateObject(); // 创建根节点 cJSON *item = cJSON_CreateObject(); // 创建semantic节点 cJSON *next = cJSON_CreateObject(); // 创建slots节点 cJSON_AddItemToObject(root, "rc", cJSON_CreateNumber(0)); // 在根节点下添加rc节点 cJSON_AddItemToObject(root, "operation", cJSON_CreateString("CALL")); // 在根节点下添加operation节点 cJSON_AddItemToObject(root, "service", cJSON_CreateString("telephone")); // 在根节点下添加service节点 cJSON_AddItemToObject(root, "text", cJSON_CreateString("打电话给张三")); // 在根节点下添加text节点 cJSON_AddItemToObject(root, "semantic", item); // 在根节点下添加semantic节点 cJSON_AddItemToObject(item, "slots", next); // 在semantic节点下添加slots节点 cJSON_AddItemToObject(next, "name", cJSON_CreateString("张三")); // 在slots节点下添加name节点 printf("%s\n", cJSON_Print(root)); // 打印整个JSON字符串 return 0; } ``` 这段代码将创建一个包含您提供的样例JSON数据的JSON对象,并打印出整个JSON字符串。您可以根据您的需求修改和扩展这段代码来操作JSON数据。 请注意,您需要在编译和链接过程中将cJSON链接到您的项目中。您可以通过克隆cJSON源码并将其添加到您的项目中来完成这一步骤。有关如何在Linux使用cJSON的更多信息,请参考cJSON的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值