当前位置:网站首页>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也是完全没问题的这个东西不难,就是要细心。
边栏推荐
- Automated test Po design model
- 期货开户哪家最好最安全
- Hit the test site directly: summary of common agile knowledge points in PMP examination
- Mock服务moco系列(一)- 简介、第一个Demo、Get请求、Post请求
- Idea essential plug-ins
- MATLAB中join函数使用
- go接口变量的类型断言
- PageHelper can also be combined with lambda expressions to achieve concise paging encapsulation
- mysql case when
- PHP解决并发问题的几种实现
猜你喜欢
随机推荐
Redis源码与设计剖析 -- 18.Redis网络连接库分析
WPF implements user avatar selector
简述冒泡排序与快速排序
Brief introduction of bubble sort and quick sort
C# Linq 去重&去重求和
更新|3DCAT实时云渲染 v2.1.2版本全新发布
Auditing related notes
ROS learning notes (IV) ROS cannot solve rosdep init or update
Thesis reading_ Multi task learning_ MMoE
RedisTemplate解决高并发下秒杀系统库存超卖方案 — Redis事务+乐观锁机制
Methods of de duplication and connection query in MySQL database
什么是 IP SSL 证书,如何申请?
Cloud XR面临的问题以及Cloud XR主要应用场景
PageHelper还能结合Lambda表达式实现简洁的分页封装
itextpdf实现多PDF文件合并为一个PDF文档
排序还需要了解的信息以及链表
Who is responsible for the problems of virtual idol endorsement products?
Idea 必备插件
Type assertion of go interface variables
Redis source code and design analysis -- 16. AOF persistence mechanism








