ToB企服应用市场:ToB评测及商务社交产业平台

标题: cJSON学习及简单应用小结 [打印本页]

作者: tsx81429    时间: 2024-6-11 18:57
标题: cJSON学习及简单应用小结
JSON 简介

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据互换格式。它基于ECMAScript(欧洲计算机制造商协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为抱负的数据互换语言。
以下是JSON的一些基本特点和用法:
cJSON(C语言JSON)库先容

cJSON(C语言JSON)库是一个用于在C语言中解析和生成JSON数据的轻量级开源库,重要包罗两个重要的源文件:cJSON.h(头文件)和cJSON.c(实现文件),使得在项目中集成和使用非常便捷。
cJSON安装

cJSON项目托管在Github上,堆栈地址,因此可以用git命令直接克隆到本地,命令如下
  1. git clone https://github.com/DaveGamble/cJSON.git
复制代码
直接到cJSON托管的github官网举行下载,然后拷贝到自己的项目文件夹下面,官网如下:
  1. https://github.com/DaveGamble/cJSON
复制代码
官网的README还推荐了别的安装方法,CMAKE,Vcpkg等。
解析JSON数据常用API及简单举例
  1. CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
  2. //提供一段JSON格式内容,这将返回一个您可以查询的cJSON对象。
  3. CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
  4. //从Object中获取项目“string”。不区分大小写。
  5. CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
  6. //从Object中获取项目“string”。区分大小写。
  7. cJSON_ArrayForEach(element, array);
  8. //带参数宏定义,遍历数组array中的element元素
  9. CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
  10. CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);
  11. CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);//将cJSON打印
复制代码
应用举例:
  1. //recvbuf={"results":[{"location":{"id":"WS0E9D8WN298","name":"广州","country":"CN","path":"广州,广州,广东,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"阴","code":"9","temperature":"27"},"last_update":"2024-06-11T19:38:38+08:00"}]}
  2. ...
  3.     cJSON *wea = cJSON_Parse(recvbuf); // 1.解析
  4.     printf("%s\n", cJSON_Print(wea));  // 打印预览
  5.     cJSON *results = cJSON_GetObjectItem(wea, "results"); // 2.打开遇到的第一个对象
  6.     cJSON *result = NULL;
  7.     cJSON_ArrayForEach(result, results) // 3.遍历"results"数组
  8.     {
  9.         cJSON *now = cJSON_GetObjectItem(result, "now");              // 将遇到的result对象中,如果存在“now”的元素就记录
  10.         cJSON *temperature = cJSON_GetObjectItem(now, "temperature"); // 将遇到的now对象中,如果存在“temperature”的元素就记录
  11.         printf("temperature :%d\n", atoi(temperature->valuestring));  // printf("temperature :%s\n", temperature->valuestring);
  12.     }
  13. ...
复制代码
输出结果
  1. {
  2.         "results":      [{
  3.                         "location":     {
  4.                                 "id":   "WS0E9D8WN298",
  5.                                 "name": "广州",
  6.                                 "country":      "CN",
  7.                                 "path": "广州,广州,广东,中国",
  8.                                 "timezone":     "Asia/Shanghai",
  9.                                 "timezone_offset":      "+08:00"
  10.                         },
  11.                         "now":  {
  12.                                 "text": "阴",
  13.                                 "code": "9",
  14.                                 "temperature":  "27"
  15.                         },
  16.                         "last_update":  "2024-06-11T19:38:38+08:00"
  17.                 }]
  18. }
  19. temperature :27
复制代码
生成JSON数据API及简单举例

(和下次的base64编码一起更新)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4