cJSON使用说明总结

cJSON仅有一个.h和一个.c文件组成,由于是纯C语言实现的,所以跨平台性好;采用的是链表存储;

原型如下:

typedef struct cJSON {

struct cJSON *next,*prev;//下一个节点,上一个节点

struct cJSON *child;所有通过additem添加的都是子节点

int type;根据不同的键值对有不同的type,例如string是4

根据不同的类型来获取值,类似于union,只有选对了类型才能得到正确的值

char *valuestring;

int valueint;

double valuedouble;

char *string;键值对的key

} cJSON;

注:每个additem的节点都是子节点(child),多个子节点之间可以通过next和prev来指向前一个后一个节点;

从而实现遍历的效果

//宏定义,区分不同的type值

#define cJSON_False 0

#define cJSON_True 1

#define cJSON_NULL 2

#define cJSON_Number 3

#define cJSON_String 4

#define cJSON_Array 5

#define cJSON_Object 6

#define cJSON_IsReference 256

 

 

cJSON的基本数据类型如上所示:有false,true,null,double,string,array,object;可以理解为该数据是一个大括号{ }中包含的键(key)值(value)对,其中key的值都是字符串类型的;

例:可以利用函数char*date=cJSON_Print(cJSON *item);将结果显示出来

创建方式

打印结果

cJSON*false_value= cJSON_CreateFalse();

false

cJSON*true_value= cJSON_CreateTrue();

true

cJSON*null_value= cJSON_CreateNull();

null

cJSON*double_value= cJSON_CreateNumber(123);

123

cJSON* string_value= cJSON_CreateString("string");

string

cJSON*object= cJSON_CreateObject();

{}

cJSON*arr= cJSON_CreateArray();

[]

数组:

创建:创建不同类型的数组,

cJSON*arr= cJSON_CreateArray();不指定类型,内部item可以混搭

cJSON *cJSON_CreateIntArray(int *numbers,int count);

cJSON *cJSON_CreateFloatArray(float *numbers,int count);

cJSON *cJSON_CreateDoubleArray(double *numbers,int count);

cJSON *cJSON_CreateStringArray(const char **strings,int count);

增:

void cJSON_AddItemToArray(cJSON *array, cJSON *item);

void cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);

删:

void   cJSON_Delete(cJSON *c);

extern cJSON *cJSON_DetachItemFromArray(cJSON *array,int which);从数组中移除,分离,不删除

extern void   cJSON_DeleteItemFromArray(cJSON *array,int which);

改:

void cJSON_ReplaceItemInArray(cJSON *array,int which,cJSON *newitem);

查:

int   cJSON_GetArraySize(cJSON *array);返回数组长度

cJSON *cJSON_GetArrayItem(cJSON *array,int item);返回指定下标位置的节点

Object:

创建:

cJSON*object= cJSON_CreateObject();

增:

void cJSON_AddItemToObject(cJSON *object,const char *string,cJSON *item);

void cJSON_AddItemReferenceToObject(cJSON *object,const char *string,cJSON *item);

//宏的方式增加

cJSON_AddStringToObject(json,"name","0123546");

cJSON_AddNumberToObject(json,"age",123);

cJSON_AddNullToObject(json,"dadfs");

cJSON_AddFalseToObject(json,"dadfs");

cJSON_AddTrueToObject(json,"dadfs");

删:

void   cJSON_Delete(cJSON *c);//等同于delete变量

从树上移开,

cJSON *cJSON_DetachItemFromObject(cJSON *object,const char *string);

void   cJSON_DeleteItemFromObject(cJSON *object,const char *string);

改:

void cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);

查:

cJSON *cJSON_GetObjectItem(cJSON *object,const char *string);通过key获取节点

转换:

char*转为cJSON格式

cJSON *cJSON_Parse(const char *value);

cJSON格式转char*

char  *cJSON_Print(cJSON *item);//带格式的(美观)

char  *cJSON_PrintUnformatted(cJSON *item);//不带格式(杂乱,一行到完)

 

array和object可以互相作为item互为子节点,因此使用时没有固定的格式,需要灵活应用

需要的时候从网上找到这俩文件,下载下来添加自己的项目中就能直接用

一般都是由一个object作为根节点来使用

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值