c语言如何判断字符json,全面详解C语言使用cJSON解析JSON字符

为什么选择cJSON来解析JSON字符串?因为简洁又简单,而且效率又快,cJSON工程文件也非常简单,仅一个.c文件和一个.h文件!

如果要自己写的话就是重造轮子了,况且效率上也不一定会比cJSON更好!

且文件体积大小不到30k,源代码思路也非常清晰,也非常适合研究。

点击下载CJSON

typedef struct cJSON

{ //cJSON结构体

struct cJSON *next,*prev; /* 遍历数组或对象链的前向或后向链表指针*/

struct cJSON *child; /* 数组或对象的孩子节点*/

int type; /* key的类型*/

char *valuestring; /* 字符串值*/

int valueint; /* 整数值*/

double valuedouble; /* 浮点数值*/

char *string; /* key的名字*/

} cJSON;

正所谓万丈高楼平地起,先从最简单的开始!

先来介绍四个常用的cJSON函数:

cJSON *cJSON_Parse(const char *value);

作用:将一个JSON数据包,按照cJSON结构体的结构序列化整个数据包,并在堆中开辟一块内存存储cJSON结构体

返回值:成功返回一个指向内存块中的cJSON的指针,失败返回NULL

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

作用:获取JSON字符串字段值

返回值:成功返回一个指向cJSON类型的结构体指针,失败返回NULL

char *cJSON_Print(cJSON *item);

作用:释放位于堆中cJSON结构体内存

返回值:无

假如说有这样的一个JSON字符串

{

"test_1":"0"

"test_2":"1"

"test_3":"2"

} //json_string

这是最简单的JSON字符串

我们首先要先将

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cJSON是一个轻量级的JSON解析器和生成器,它可以在C语言使用。cJSON提供了一种方便的方式来解析和生成JSON数据,使得在C语言中处理JSON数据变得更加简单。以下是cJSON的一些常见用法。 ## 解析JSON数据 首先需要将JSON字符串转换成cJSON对象,然后根据需要获取对象的值。 ```c char* json_str = "{\"name\":\"Tom\",\"age\":20,\"gender\":\"male\"}"; cJSON* json = cJSON_Parse(json_str); if (json != NULL) { cJSON* name = cJSON_GetObjectItem(json, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("name: %s\n", name->valuestring); } cJSON* age = cJSON_GetObjectItem(json, "age"); if (cJSON_IsNumber(age)) { printf("age: %d\n", age->valueint); } cJSON* gender = cJSON_GetObjectItem(json, "gender"); if (cJSON_IsString(gender) && (gender->valuestring != NULL)) { printf("gender: %s\n", gender->valuestring); } cJSON_Delete(json); } ``` 在上面的代码中,我们首先定义了一个JSON字符串,并使用`cJSON_Parse()`函数将其转换成cJSON对象。然后,我们使用`cJSON_GetObjectItem()`函数获取对象的值,该函数需要传入要获取的值的key。最后,我们使用`cJSON_IsString()`和`cJSON_IsNumber()`函数来检查获取到的值是否为字符串或数字类型。 ## 生成JSON数据 我们可以使用cJSON来生成JSON数据,并将其转换成JSON字符串。 ```c cJSON* json = cJSON_CreateObject(); if (json != NULL) { cJSON_AddStringToObject(json, "name", "Tom"); cJSON_AddNumberToObject(json, "age", 20); cJSON_AddStringToObject(json, "gender", "male"); char* json_str = cJSON_Print(json); printf("json_str: %s\n", json_str); free(json_str); cJSON_Delete(json); } ``` 在上面的代码中,我们首先使用`cJSON_CreateObject()`函数创建一个cJSON对象。然后,我们使用`cJSON_AddStringToObject()`和`cJSON_AddNumberToObject()`函数向对象中添加值。最后,我们使用`cJSON_Print()`函数将对象转换成JSON字符串,并使用`free()`函数释放内存。需要注意的是,在使用完cJSON对象后,需要使用`cJSON_Delete()`函数将其删除以释放内存。 ## 数组操作 cJSON还支持数组操作。 ```c cJSON* json = cJSON_CreateArray(); if (json != NULL) { cJSON* name1 = cJSON_CreateString("Tom"); cJSON_AddItemToArray(json, name1); cJSON* name2 = cJSON_CreateString("Mary"); cJSON_AddItemToArray(json, name2); char* json_str = cJSON_Print(json); printf("json_str: %s\n", json_str); free(json_str); cJSON_Delete(json); } ``` 在上面的代码中,我们首先使用`cJSON_CreateArray()`函数创建一个cJSON数组对象。然后,我们使用`cJSON_CreateString()`函数创建两个字符串对象,并使用`cJSON_AddItemToArray()`函数将它们添加到数组中。最后,我们使用`cJSON_Print()`函数将对象转换成JSON字符串,并使用`free()`函数释放内存。 以上是cJSON的一些常见用法,可以帮助我们在C语言中更加方便地处理JSON数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值