cJSON 数据输出

cJSON的使用方法_rotation博客-CSDN博客_cjson使用首先,要介绍一下什么是json格式。一.JSON格式简述JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但https://blog.csdn.net/fengxinlinux/article/details/53121287若干说明
1. cJSON_CreateObject函数可创建一个根数据项,之后便可向该根数据项中添加string或int等内容,返回的是一个 cJSON的指针,注意,在这个指针用完了以后,需要手工调用 cJSON_Delete(root); 进行内存回收。
2. cJSON_AddNumberToObject向节点中添加子节点,例如此处添加name节点,节点值为字符串"fengxin"
3. 需要注意的是  json 格式的数据,虽然也是一个字符串的样子,但这个时候还是无法当成普通的字符串进行使用,需要调用 cJSON_PrintUnformatted(root) 或者 cJSON_Print(root);来将json对象转换成普通的字符串,并且都是以该json对象的根为基点。两个API的区别即是:一个是没有格式的:也就是转换出的字符串中间不会有"\n" "\t"之类的东西存在,而cJSON_Print(root);打印出来是人看起来很舒服的格式
4. 因为函数内部封装有malloc函数,所以使用free函数释放被out占用的内存空间
 

其中加粗部分已验证,使用  cJSON_PrintUnformatted(root)确实为无格式输出,便于对数据进行下一步处理。

 eg: 

char *pstr = cJSON_PrintUnformatted(root);        //无格式的CJson
cJSON_Delete(root);
printf("%s\n",pstr); 
free(pstr);

输出结果:

        

 

  // 打印并释放
  char *pstr = cJSON_Print(root); 
  cJSON_Delete(root);
  printf("%s\n",pstr); 
  free(pstr);
  

输出:

        

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cjson 是一个用于处理 JSON 格式数据的 C 语言库,它提供了一组 API 函数,可以将 JSON 数据解析为 C 语言的数据结构,或者将 C 语言的数据结构转换为 JSON 格式数据。如果你想要遍历 JSON 格式数据,cjson 提供了以下几个 API 函数: 1. `cJSON *cJSON_GetObjectItem(const cJSON *object, const char *string)`:根据键名获取 JSON 对象中的某个元素。 2. `cJSON *cJSON_GetArrayItem(const cJSON *array, int index)`:根据索引获取 JSON 数组中的某个元素。 3. `cJSON *cJSON_GetArrayItemCaseSensitive(const cJSON *array, int index)`:根据索引获取 JSON 数组中的某个元素,区分大小写。 4. `cJSON *cJSON_GetObjectItemCaseSensitive(const cJSON *object, const char *string)`:根据键名获取 JSON 对象中的某个元素,区分大小写。 遍历 JSON 数据的基本思路是,首先获取 JSON 数据的根节点,然后根据节点类型,进一步获取其子节点或者元素。下面是一个示例代码,展示如何遍历 JSON 数据: ```c #include <stdio.h> #include <stdlib.h> #include "cJSON.h" int main() { char *json_str = "{\"name\":\"Alice\",\"age\":20,\"hobbies\":[\"reading\",\"swimming\"]}"; cJSON *root = cJSON_Parse(json_str); if (root == NULL) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON *name = cJSON_GetObjectItem(root, "name"); if (name != NULL) { printf("name: %s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItem(root, "age"); if (age != NULL) { printf("age: %d\n", age->valueint); } cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies"); if (hobbies != NULL) { cJSON *hobby = NULL; cJSON_ArrayForEach(hobby, hobbies) { printf("hobby: %s\n", hobby->valuestring); } } cJSON_Delete(root); return 0; } ``` 输出结果为: ``` name: Alice age: 20 hobby: reading hobby: swimming ``` 其中,`cJSON_ArrayForEach` 是一个宏定义,用于遍历 JSON 数组中的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值