cJSON库使用教程

本文详细介绍了cJSON库的下载、Linux安装步骤,以及数据结构和常用接口,包括创建JSON对象、添加数据、解析JSON字符串等。通过示例展示了如何在C语言中封装和解析JSON数据,是理解cJSON库使用的实用教程。

目录

1.cJSON库下载链接

2.Linux 安装

3.cJSON数据结构和接口介绍

4.使用案例

5.详细补充



1.cJSON库下载链接

https://github.com/DaveGamble/cJSON

2.Linux 安装

切换到下载的目录,输入

# mkdir build
# cd build
# cmake ..
# make

3.cJSON数据结构和接口介绍

  • 数据结构
typedef struct cJSON {  
    struct cJSON *next,*prev;   // 数组 对象数据中用到  
    struct cJSON *child;        // 数组 和对象中指向子数组对象或值  
    int type;           // 元素的类型,如是对象还是数组  
    char *valuestring;          // 如果是字符串  
    int valueint;               // 如果是数值  
    double valuedouble;         // 如果类型是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;
  • 封装json数据对象-常用接口
  • 创建JSON主对象 
    cJSON* root=cJSON_CreateObject();
  • 创建数组对象
cJSON* array=cJSON_CreateArray();
  • 向json对象添加字符串类型数据
cJSON_AddStringToObject(root,"名称","字符串");
  • 向json对象添加数字类型数据
 cJSON_AddNumberToObject(root,"名称",数字)
  • 向对象中增加对象(字符串、数组、数字)
  cJSON_AddItemToObject(root,"名称",cJSON_CreateString("北海道的光")) ;
  cJSON_AddItemToObject(root,"名称",cJSON_CreateNumber(99))  ;
  • 向array数组对象添加一个root对象
cJSON_AddItemToArray(array,root);
  • 向数组中增加元素(元素类型不一定相同)
cJSON_AddItemToArray(array,cJSON_CreateString("Linux"));
cJSON_AddItemToArray(array,cJSON_CreateNumber(26));
  • 向普通json对象添加json对象
cJSON_AddObjectToObject(cJSON * const object, const char * const name)
  • 将json对象转为字符串
char *cJSON_Print(cJSON *item)		
  • 释放空间
 cJSON_Delete(root);
  • 解析json字符串-常用接口
  • 首先获取字符串形式的JSON数据,获取JSON对象
cJSON* root=cJSON_Parse(data);
  • 获取指定名称的节点指针(也可以获取数组对象)
  cJSON *obj = cJSON_GetObjectItem(root,"name");
  • 解析数组,首先按上步获取数组指针 如 cJSON* array
//获取数组大小 
int size=cJSON_GetArraySize(array);
//获取数组元素 
cJSON* tmp=cJSON_GetArrayItem(array,0);	//下标从0开始
  • 释放json空间
 cJSON_Delete(root);

4.使用案例

  • 解析字符串
static void test_parse(void)
{
    const char *data="{\
                \"name\":\"litao\", \
                \"age\":\"22\", \
                \"habbit\":\"com\" \
                }";
    cJSON *root = cJSON_Parse(data);
   
    cJSON *obj = cJSON_GetObjectItem(root,"name");
    
    printf("data:%s\n",obj->valuestring);

    cJSON_Delete(root);
}
  • 封装json字符串
static void test_add_json_Array(void)
{
    cJSON *array = cJSON_CreateArray();
    cJSON *name = cJSON_CreateObject();
    cJSON *age = cJSON_CreateObject();
    cJSON_AddStringToObject(name,"name","litao");
    cJSON_AddStringToObject(age,"age","1232222");
    cJSON_AddItemToArray(array,name);
    cJSON_AddItemToArray(array,age);
    printf("array:%s\n",cJSON_Print(array));
}

5.详细补充

分享一个博主的cJSON教程,超详细

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值