cJSON的结构与常用函数说明

cJSON结构

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;

/* Supply a block ofJSON, and this returns a cJSON object you can interrogate. Call cJSON_Deletewhen finished. */

extern cJSON *cJSON_Parse(const char *value);// 给定的json字符串中得到cjson对象


/* Render a cJSONentity to text for transfer/storage. Free the char* when finished. */

extern char *cJSON_Print(cJSON *item);//cjson对象中获取有格式的json对象


/* Render a cJSONentity to text for transfer/storage without any formatting. Free the char* whenfinished. */

extern char *cJSON_PrintUnformatted(cJSON *item);//cjson对象中获取无格式的json对象

 

/* Delete a cJSONentity and all subentities. */

extern void  cJSON_Delete(cJSON *c);//删除cjson对象,释放链表占用的内存空间

 

/* Returns thenumber of items in an array (or object). */

extern int   cJSON_GetArraySize(cJSON *array);//获取cjson对象数组成员的个数

/* Retrieve itemnumber "item" from array "array". Returns NULL ifunsuccessful. */

extern cJSON *cJSON_GetArrayItem(cJSON*array,int item);//根据下标获取cjosn对象数组中的对象

/* Get item"string" from object. Case insensitive. */

extern cJSON *cJSON_GetObjectItem(cJSON*object,const char *string);//根据键获取对应的值(cjson对象)

 

/* For analysingfailed parses. This returns a pointer to the parse error. You'll probably needto look a few chars back to make sense of it. Defined when cJSON_Parse()returns 0. 0 when cJSON_Parse() succeeds. */

extern const char *cJSON_GetErrorPtr(void);//获取错误字符串


示例:

//解析json字符串
#include<stdlib.h>
#include<stdio.h> 
#include <string.h>
#include <iostream>
#include "cJSON.h"
int main()
{   
      char* json = "{\"id\":\"1200000000\",\"number\":1}";
      cJSON * root_base = cJSON_Parse(json);//change to json object
      if(root_base )
      { printf("root_base is not null!\n ");        
        cJSON * cParse1 = cJSON_GetObjectItem(root_base,"id");
        cJSON * cParse2 = cJSON_GetObjectItem(root_base,"number");	 
        //get the value 
        std::string id = cParse->valuestring;
        std::string number= cParse->valueint;
        printf("id      :  %s\n",id.c_str()); 
        printf("number:  %d\n",number);  
        cJSON_Delete(root_base );//用完需要释放	 
     }
     return 0;
}

组json的常用函数:

cJSON * root  = cJSON_CreateObject();                    //创建JSON结构体
cJSON_AddNumberToObject(root, "number", 0);   //添加键值对
cJSON_AddStringToObject(root, "name", "i")  ;       //添加键值对

cJSON * root_arry = cJSON_CreateArray();//创建json数组型结构体

cJSON_AddItemToArray(root_arry,root); //为数组添加对象
cJSON_AddItemToObject(root_base, "array", root_array);//为对象添加数组

需要使用cjson时 可在工程中直接将以下文件作为源文件使用,官网可下载,应该也有相应的生成库,以下是我上传的文件链接:

文件: 点击打开链接




cJSON是一个轻量级的JSON解析器和生成器,适用于C语言。它提供了一些方便的API用于解析和生成JSON数据。下面是cJSON库的常用函数介绍: ### 1. cJSON_Parse 解析JSON字符串,返回cJSON对象。 ```c cJSON *cJSON_Parse (const char *value); ``` ### 2. cJSON_Print 将cJSON对象转换成字符串。 ```c char *cJSON_Print (const cJSON *item); ``` ### 3. cJSON_AddItemToObject 将一个cJSON对象作为子对象添加到另一个cJSON对象中。 ```c void cJSON_AddItemToObject (cJSON *object, const char *string, cJSON *item); ``` ### 4. cJSON_GetObjectItem 获取一个cJSON对象中指定名称的子对象。 ```c cJSON *cJSON_GetObjectItem (const cJSON *object, const char *string); ``` ### 5. cJSON_CreateObject 创建一个空的cJSON对象。 ```c cJSON *cJSON_CreateObject (void); ``` ### 6. cJSON_CreateString 创建一个cJSON字符串对象。 ```c cJSON *cJSON_CreateString (const char *string); ``` ### 7. cJSON_CreateNumber 创建一个cJSON数字对象。 ```c cJSON *cJSON_CreateNumber (double num); ``` ### 8. cJSON_CreateBool 创建一个cJSON布尔对象。 ```c cJSON *cJSON_CreateBool (int b); ``` ### 9. cJSON_CreateArray 创建一个空的cJSON数组对象。 ```c cJSON *cJSON_CreateArray (void); ``` ### 10. cJSON_Delete 释放一个cJSON对象及其内存。 ```c void cJSON_Delete (cJSON *item); ``` 上述函数是cJSON库中的常用函数,使用这些函数可以实现JSON数据的解析和生成。需要注意的是,在使用完cJSON对象后需要调用cJSON_Delete函数释放对象及其内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值