优点:cJSON只有cJSON.h和cJSON.c两个文件、600行代码可以直接加到工程项目中,不必编译成库使用。
结论:优先使用cJSON
cJSON结构:
/* The cJSON structure: */
typedef struct cJSON {
struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
struct cJSON *child; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
int type; /* The type of the item, as above. */
char *valuestring; /* The item's string, if type==cJSON_String */
int valueint; /* The item's number, if type==cJSON_Number */
double valuedouble; /* The item's number, if type==cJSON_Number */
char *string; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
} cJSON;
使用过程:
1.创建
cJSON *cjson = cJSON_CreateObject(); //创建一个对象节点
cJSON *cjson = cJSON_CreateArrary(); //创建一个数组
cJSON *cjson = cJSON_CreateString(const char *ch); //创建一个字符串类型的节点,保存ch
cJSON *cjson = cJSON_CreateNumber(double n); //创建一个数字类型的节点,保存n,不分整数和浮点数
...
cJSON_CreateXXX内部使用malloc分配动态内存,使用完后一定调用