cJSON的核心结构体
cJSON的核心结构体就是一个cJSON,理解了这个结构体,基本上对cJSON的使用就有了个基本概念了。该结构体具体定义如下:
typedef struct cJSON {
struct cJSON*next,*prev; /* 遍历数组或对象链的前向或后向链表指针*/
struct cJSON *child; /*数组或对象的孩子节点*/
int type; /* key的类型*/
char *valuestring; /*字符串值*/
int valueint; /* 整数值*/
double valuedouble; /* 浮点数值*/
char *string; /* key的名字*/
} cJSON;
在 cJSON 库中,type 字段用于表示当前 JSON 节点的类型,其取值通常是预定义的宏常量。以下是常见的 7 种类型及其对应的 type 值(具体数值可能因 cJSON 版本略有差异,但逻辑一致):
cJSON 类型(type 取值):
-
False(假值)
type = 0或cJSON_False(宏定义通常为0) -
True(真值)
type = 1或cJSON_True(宏定义通常为1) -
NULL(空值)
type = 2或cJSON_NULL(宏定义通常为2) -
Number(数字)
type = 3或cJSON_Number(宏定义通常为3) -
String(字符串)
type = 4或cJSON_String(宏定义通常为4) -
Array(数组)
type = 5或cJSON_Array(宏定义通常为5) -
Object(对象)
type = 6或cJSON_Object(宏定义通常为6)
补充说明:
-
实际使用时,建议直接使用 cJSON 提供的宏(如
cJSON_True、cJSON_Number),而非硬编码数字,以提高代码可读性和兼容性。 -
示例代码片段:
-
if (json->type == cJSON_String) { printf("Value is a string: %s\n", json->valuestring); }
如果需要确认具体版本的宏定义,可以查看 cJSON 头文件(如 cJSON.h)。


















