总结
国外的不让下载,找个国内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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




