C语言 cJSON库的使用

首先先下载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也是完全没问题的这个东西不难,就是要细心。

猜你喜欢

转载自blog.csdn.net/smile_5me/article/details/110930727