C语言:cJSON库用法详解

   日期:2020-12-19     浏览:477    评论:0    
核心提示:一、JSON、cJSON简介1. JSON 简介JSON格式详解2. cJSON简介cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。其中主要包括两个文件cjson.c和cjson.h。cjson.h文件中包含了对于JSON格式的结构体定义以及一些操作JSON格式的功能函数,包括创建JSON、向JSON格式中添加数字,字符,布尔值等等、读取JSON格式、将JSON格式转化为字符串等。cjson.c文件中就是功能函数的具体实现。cJSO

一、JSON、cJSON简介

1. JSON 简介

JSON格式详解

2. cJSON简介

cJSON是一个使用C语言编写的JSON数据解析器,具有超轻便,可移植,单文件的特点,使用MIT开源协议。其中主要包括两个文件cjson.c和cjson.h。

  • cjson.h文件中包含了对于JSON格式的结构体定义以及一些操作JSON格式的功能函数,包括创建JSON、向JSON格式中添加数字,字符,布尔值等等、读取JSON格式、将JSON格式转化为字符串等。
  • cjson.c文件中就是功能函数的具体实现。

cJSON源码下载地址

下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#include “cJSON.h”),然后和cJSON.c一起编译即可使用。

cJSON数据结构定义

具体代码如下:

typedef struct cJSON { 
    struct cJSON *next,*prev;    
    struct cJSON *child;         
 
    int type;                    
 
    char *valuestring;           
    int valueint;                
    double valuedouble;          
 
    char *string;                
} cJSON;

二、使用cJSON构造JSON

1. cJSON库函数介绍

介绍一些构造JSON时,经常用到的函数。
具体代码如下:


CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);		//创建对象---常用
CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);	//创建数字
CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);	//创建字符串

CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);		//创建数组---常用
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);	//创建整型数组
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);	//创建浮点型数组---这个使用会出问题,需要浮点型可以使用双浮点
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);	//创建双浮点型数组
CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);	//创建字符型数组

CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name);//在对象中添加null
CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);//在对象中添加true
CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);//在对象中添加false
CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);	//在对象中添加数字
CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);	//在对象中添加字符串
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);		//在对象中添加项目
CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);	//在数组中添加项目---不常用

CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);	//JSON数据结构转换为JSON字符串---有格式
CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);		//JSON数据结构转换为JSON字符串---无格式

CJSON_PUBLIC(void) cJSON_Delete(cJSON *item); 	//清除结构体

2. 使用cJSON构造构造JSON

具体示例代码如下:

#include <stdio.h>
#include "cJSON.h"

int main(void)
{ 
	double  grade[4]={ 66.5,118.5,61.5,128.5};

	
	char *json_data = NULL ;
		
	cJSON *TCP = cJSON_CreateObject();				//创建一个对象
	
	cJSON_AddStringToObject(TCP,"name","MQ");		//添加字符串 
	cJSON_AddNumberToObject(TCP,"age",25);	    	//添加整型数字 
	cJSON_AddNumberToObject(TCP,"weight",66.66);	// 添加浮点型数字
	 
	cJSON *ADD	= cJSON_CreateObject();
	cJSON_AddStringToObject(ADD,"country","China");	//添加字符串 
	cJSON_AddNumberToObject(ADD,"zip-code",123456);	//添加整型数字
 	cJSON_AddItemToObject(TCP,"address",ADD);
	
	cJSON *SUB  = cJSON_CreateArray();
	cJSON_AddStringToObject(SUB,"","政治"); 
 	cJSON_AddStringToObject(SUB,"","数学");
	cJSON_AddStringToObject(SUB,"","英语");
	cJSON_AddStringToObject(SUB,"","专业课");
	cJSON_AddItemToObject(TCP,"subject",SUB);
	
	cJSON *GRA  = cJSON_CreateDoubleArray(grade,4);
	cJSON_AddItemToObject(TCP,"grade",GRA);
	
	cJSON *STU  = cJSON_CreateArray();
	cJSON *Z3  = cJSON_CreateObject();
	cJSON_AddStringToObject(Z3,"name","张三");		//添加字符串 
	cJSON_AddNumberToObject(Z3,"age",24);	    	//添加整型数字 
	cJSON_AddTrueToObject(Z3,"gender");
	cJSON_AddItemToArray(STU,Z3);
	cJSON *L4  = cJSON_CreateObject();
	cJSON_AddStringToObject(L4,"name","李四");		//添加字符串 
	cJSON_AddNumberToObject(L4,"age",25);	    	//添加整型数字 
	cJSON_AddTrueToObject(L4,"gender");
	cJSON_AddItemToArray(STU,L4);
	cJSON *W5  = cJSON_CreateObject();
	cJSON_AddStringToObject(W5,"name","王五");		//添加字符串 
	cJSON_AddNumberToObject(W5,"age",26);	    	//添加整型数字 
	cJSON_AddTrueToObject(W5,"gender");
	cJSON_AddItemToArray(STU,W5);
	cJSON_AddItemToObject(TCP,"student",STU);
	
	cJSON_AddFalseToObject(TCP,"gender");

	json_data = cJSON_Print(TCP);					//JSON数据结构转换为JSON字符串
	printf("%s\n",json_data);
	cJSON_Delete(TCP);
	return 0;
}

运行结果如下:

{ 
	"name": "MQ",		//字符串
	"age":	25,			//整数
	"weight": 66.66,	//浮点数
	"address":
    { 
        "country": "China",
        "zip-code": 123456
    },						//对象
	"subject":      ["政治", "数学", "英语", "专业课"],//字符型数组
    "grade":        [66.5, 118.5, 61.5, 128.5],		  //浮点型数组
	"student":[
		{ "name":"张三","age":24,"gender":ture},
		{ "name":"李四","age":25,"gender":ture},
		{ "name":"王五","age":26,"gender":ture},
	],								//对象型数组
	"gender": false					//逻辑值
}

三、使用cJSON解析JSON

待更新。。。。。。。。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服