当前位置:网站首页>C语言 cJSON库的使用
C语言 cJSON库的使用
2022-07-25 18:00:00 【smile_5me】
首先先下载cJSON的库,还是很容易找到的下载的方式
解开压缩包,将里面的cJSON.h和cJSON.c放到你的工程中,就可以开始玩耍了
先上一个简单代码:
#include<stdio.h>
#include<stdlib.h>
#include"cJSON.h"
int main(void)
{
char *data = "{\"jjj\":[\"kkk\",\"lll\"]}";
//从缓冲区中解析出JSON结构
cJSON * json= cJSON_Parse(data);
//将传入的JSON结构转化为字符串 并打印
char *json_data = NULL;
printf("data:%s\n",json_data = cJSON_Print(json));
free(json_data);
//将JSON结构所占用的数据空间释放
cJSON_Delete(json);
return 0;
}输出结果:
data:{
"jjj": ["kkk", "lll"]
}
然后可以进阶一下,代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"cJSON.h"
int main(void)
{
//创建一个空的文档(对象)
cJSON *json = cJSON_CreateObject();
cJSON_AddItemToObject(json,"name",cJSON_CreateString("马保国"));
//向文档中添加一个键值对
//cJSON_AddItemToObject(json,"age",cJSON_CreateNumber(29));
cJSON_AddNumberToObject(json,"年龄",69);
cJSON *array = NULL;
cJSON_AddItemToObject(json,"技能",array=cJSON_CreateArray());
cJSON_AddItemToArray(array,cJSON_CreateString("耗子尾汁"));
cJSON_AddItemToArray(array,cJSON_CreateString("闪电鞭"));
cJSON_AddItemToArray(array,cJSON_CreateString("不讲武得"));
cJSON_AddNumberToObject(json,"score",0);
cJSON_AddStringToObject(json,"address","xxx");
//将json结构格式化到缓冲区
char *buf = cJSON_Print(json);
//打开文件写入json内容
FILE *fp = fopen("create.json","w");
fwrite(buf,strlen(buf),1,fp);
free(buf);
fclose(fp);
//释放json结构所占用的内存
cJSON_Delete(json);
return 0;
}输出结果(写入文件里):
{
"name": "马保国",
"年龄": 69,
"技能": ["耗子尾汁", "闪电鞭", "不讲武得"],
"score": 0,
"address": "xxx"
}然后再再进阶一次:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"cJSON.h"
int main(void)
{
//先创建空对象
cJSON *json = cJSON_CreateObject();
//在对象上添加键值对
cJSON_AddStringToObject(json,"country","china");
//添加数组
cJSON *array = NULL;
cJSON_AddItemToObject(json,"stars",array=cJSON_CreateArray());
//在数组上添加对象
cJSON *obj = NULL;
cJSON_AddItemToArray(array,obj=cJSON_CreateObject());
cJSON_AddItemToObject(obj,"name",cJSON_CreateString("Faye"));
cJSON_AddStringToObject(obj,"address","beijing");
//在对象上添加键值对
cJSON_AddItemToArray(array,obj=cJSON_CreateObject());
cJSON_AddItemToObject(obj,"name",cJSON_CreateString("andy"));
cJSON_AddItemToObject(obj,"address",cJSON_CreateString("HK"));
cJSON_AddItemToArray(array,obj=cJSON_CreateObject());
cJSON_AddStringToObject(obj,"name","eddie");
cJSON_AddStringToObject(obj,"address","TaiWan");
//清理工作
FILE *fp = fopen("create.json","w");
char *buf = cJSON_Print(json);
fwrite(buf,strlen(buf),1,fp);
fclose(fp);
cJSON_Delete(json);
return 0;
}输出结果(写到文件里):
{
"country": "china",
"stars": [{
"name": "Faye",
"address": "beijing"
}, {
"name": "andy",
"address": "HK"
}, {
"name": "eddie",
"address": "TaiWan"
}]
}编译:
gcc json_example.c cJSON.c -o json_example -L . -lm相信看完这几个例子,写那种复杂一点的json也是完全没问题的这个东西不难,就是要细心。
边栏推荐
猜你喜欢

CH582 BLE 5.0 使用 LE Coded 广播和连接

二叉树的相关操作

喜讯!瑞云科技被授予“海上扬帆”5G融合应用专委会成员单位

The new version of 3dcat v2.1.3 has been released. You can't miss these three function updates!
Principle and implementation of UDP penetration NAT in P2P

「数字安全」警惕 NFT的七大骗局

Landmark buildings around the world

Lwip之内存与包缓冲管理

CVE-2022-33891 Apache spark shell 命令注入漏洞复现

Auditing related notes
随机推荐
Go defer and recover simple notes
Introduction to cloud XR and development opportunities of cloud XR in 5g Era
【无标题】
虚拟偶像代言产品出问题谁负责?
Thesis reading_ Multi task learning_ MMoE
Auditing相关注解
Oracle导入出错:IMP-00038: 无法转换为环境字符集句柄
H5 test point (mind map)
srec_cat 常用参数的使用
精彩记录
Redis源码与设计剖析 -- 17.Redis事件处理
ORB_SLAM3复现——上篇
Take you to a preliminary understanding of multiparty secure computing (MPC)
What scenarios have rust, which is becoming more and more mature, applied?
CVE-2022-33891 Apache spark shell 命令注入漏洞复现
TME2022校园招聘后台开发/运营开发/业务运维/应用开发笔试(I)编程题的一点自我分析
Cet
itextpdf实现多PDF文件合并为一个PDF文档
Type assertion of go interface variables
Unity 贝塞尔曲线的创建