暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

cJSON轻量级的C语言JSON解析器

SmallDB 2025-03-28
69

 

总结

国外的不让下载,找个国内mirror

下载代码
[root@vbox json]# git clone https://gitee.com/DaveGamble/cJSON
Cloning into 'cJSON'...
remote: Enumerating objects: 4482, done.
remote: Counting objects: 100% (4482/4482), done.
remote: Compressing objects: 100% (1476/1476), done.
remote: Total 4482 (delta 2984), reused 4482 (delta 2984), pack-reused 0 (from 0)
Receiving objects: 100% (4482/4482), 2.42 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (2984/2984), done.
[root@vbox json]#

复制头文件

复制头文件到当前目录,然后可以为被小程序output.c使用

[root@vbox json]# ls
cJSON  output.c
[root@vbox json]# cp cJSON/cJSON.h .
[root@vbox json]# ll
total 24
drwxr-xr-x. 7 root root  4096 Mar 25 14:13 cJSON
-rw-r--r--. 1 root root 15828 Mar 25 14:16 cJSON.h
-rw-r--r--. 1 root root  1634 Mar 25 14:05 output.c

编译
[root@vbox json]# gcc cJSON/cJSON.c output.c -o output
[root@vbox json]#

运行
[root@vbox json]# ./output
{
        "name": "mculover666",
        "age":  22,
        "weight":       55.5,
        "address":      {
                "country":      "China",
                "zip-code":     111111
        },
        "skill":        ["C", "Java", "Python"],
        "student":      false
}
[root@vbox json]#

源代码
#include <stdio.h>
#include "cJSON.h"

int main(void)
{
    cJSON* cjson_test = NULL;
    cJSON* cjson_address = NULL;
    cJSON* cjson_skill = NULL;
    char* str = NULL;

    /* 创建一个JSON数据对象(链表头结点) */
    cjson_test = cJSON_CreateObject();

    /* 添加一条字符串类型的JSON数据(添加一个链表节点) */
    cJSON_AddStringToObject(cjson_test, "name""mculover666");

    /* 添加一条整数类型的JSON数据(添加一个链表节点) */
    cJSON_AddNumberToObject(cjson_test, "age"22);

    /* 添加一条浮点类型的JSON数据(添加一个链表节点) */
    cJSON_AddNumberToObject(cjson_test, "weight"55.5);

    /* 添加一个嵌套的JSON数据(添加一个链表节点) */
    cjson_address = cJSON_CreateObject();
    cJSON_AddStringToObject(cjson_address, "country""China");
    cJSON_AddNumberToObject(cjson_address, "zip-code"111111);
    cJSON_AddItemToObject(cjson_test, "address", cjson_address);

    /* 添加一个数组类型的JSON数据(添加一个链表节点) */
    cjson_skill = cJSON_CreateArray();
    cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "C" ));
    cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "Java" ));
    cJSON_AddItemToArray(cjson_skill, cJSON_CreateString( "Python" ));
    cJSON_AddItemToObject(cjson_test, "skill", cjson_skill);

    /* 添加一个值为 False 的布尔类型的JSON数据(添加一个链表节点) */
    cJSON_AddFalseToObject(cjson_test, "student");

    /* 打印JSON对象(整条链表)的所有数据 */
    str = cJSON_Print(cjson_test);
    printf("%s\n", str);

    return 0;
}

参考
【cJSON】轻量级的C语言JSON解析器 - RioTian
DaveGamble/cJSON

 


文章转载自SmallDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论