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
)。