当前位置: 首页 > news >正文

湖北省勘察设计协会网站淘宝竞价排名

湖北省勘察设计协会网站,淘宝竞价排名,企业网站建立庆云县有几家,网站建设技术方面json JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据传输和存储。在C语言中,我们可以使用cjson库来处理JSON数据。本问总结了在使用cjson库中各个常用API的用法,包括组装JSON&#x…

json

  JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据传输和存储。在C语言中,我们可以使用cjson库来处理JSON数据。本问总结了在使用cjson库中各个常用API的用法,包括组装JSON(包括对象、数组、字符串等),以及解析JSON(解析对象、数组、字符串等)。

1. cjson库简介

  cjson是一个轻量级的C语言库,用于处理JSON数据。它提供了简单易用的API,能够方便地将C语言中的数据转换成JSON格式,以及将JSON格式的数据解析成C语言中的数据。

2. JSON对象的组装

2.1 组装JSON对象

  要组装一个JSON对象,可以使用以下API:

//先创建一个cJSON对象头指针
cJSON *cJSON_CreateObject(void);
//添加一个对象到另一个对象,实现嵌套
void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);

注意事项:

  • 在调用cJSON_CreateObject后,返回的指针需要通过cJSON_Delete进行内存释放,以防止内存泄漏。
  • 使用cJSON_AddItemToObject将各个子项添加到JSON对象中,其中string是子项的键名,item是子项的值,可以是数字、字符串、数组等其他JSON类型。

示例:

{
“age”:30
“name” :“John”
“is_student”:1
}

#include <stdio.h>
#include "cJSON.h"int main() {// 组装JSON对象cJSON *jsonObj = cJSON_CreateObject();// 添加数字到JSON对象中cJSON_AddNumberToObject(jsonObj, "age", 30);// 添加字符串到JSON对象中cJSON_AddStringToObject(jsonObj, "name", "John");// 添加布尔值到JSON对象中,这里用1表示truecJSON_AddBoolToObject(jsonObj, "is_student", 1);// 将JSON对象转换成字符串会开辟一个新内存,调用此函数记得手动释放char *jsonStr = cJSON_Print(jsonObj);printf("JSON Object:\n%s\n", jsonStr);// 释放JSON对象的内存cJSON_Delete(jsonObj);// 释放JSON字符串的内存free(jsonStr);return 0;
}

2.2 组装JSON数组

要组装一个JSON数组,可以使用以下API:

cJSON *cJSON_CreateArray(void);
void cJSON_AddItemToArray(cJSON *array, cJSON *item);

注意事项:

  • 在调用cJSON_CreateArray后,返回的指针需要通过cJSON_Delete进行内存释放,以防止内存泄漏。
  • 如果将cJSON_CreateArray数组对象添加到其他对象中作为子对象时,只需释放总JSON头部即可。
  • 使用cJSON_AddItemToArray将各个子项添加到JSON数组中,item是子项的值,可以是数字、字符串、对象等其他JSON类型。

示例:

{
“logList”: [{
“logName”: “f1”,
“logSize”: 1357,
“logTime”: “2023-07-24 15:19:25”
}
…//可添加
]
}

#include <stdio.h>
#include "cJSON.h"int main() {// 创建 JSON 格式的根对象cJSON *root = cJSON_CreateObject();cJSON *jsonArray = cJSON_CreateArray();//创建子对象cJSON *logEntry = cJSON_CreateObject();cJSON_AddStringToObject(logEntry, "logName", filename);cJSON_AddStringToObject(logEntry, "logSize", 100);cJSON_AddStringToObject(logEntry, "logTime","2023-07-24 15:19:25");//对象的相互嵌套不受顺序影响//将logentry插入到jsonarray数组中cJSON_AddItemToArray(jsonArray , logEntry);//将数组插入到跟对象cJSON_AddItemToObject(root, "jsonArray ", jsonArray );char *jsonStr = cJSON_Print(root);printf("JSON Array:\n%s\n", jsonStr);cJSON_Delete(root); // 释放root内存free(jsonStr); // 释放jsonStr内存return 0;
}

3. JSON对象的解析

3.1 解析JSON对象

要解析JSON中的对象,可以使用以下API:

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

注意事项:

  • 在调用cJSON_Parse后,返回的指针需要通过cJSON_Delete进行内存释放,以防止内存泄漏。
  • 使用cJSON_GetObjectItem根据键名获取JSON对象中的子项。

示例:

{
“age”:30
“name” :“John”
“is_student”:true
}

#include <stdio.h>
#include "cJSON.h"int main() {const char *jsonStr = "{\"name\":\"John\",\"age\":30,\"is_student\":true}";cJSON *jsonObj = cJSON_Parse(jsonStr);if (jsonObj != NULL) {//解析跟每个子对象的顺序无关cJSON *nameObj = cJSON_GetObjectItem(jsonObj, "name");cJSON *ageObj = cJSON_GetObjectItem(jsonObj, "age");cJSON *isStudentObj = cJSON_GetObjectItem(jsonObj, "is_student");if (nameObj != NULL && cJSON_IsString(nameObj)) {printf("Name: %s\n", nameObj->valuestring);}if (ageObj != NULL && cJSON_IsNumber(ageObj)) {printf("Age: %d\n", ageObj->valueint);}if (isStudentObj != NULL && cJSON_IsBool(isStudentObj)) {printf("Is Student: %s\n", isStudentObj->valueint ? "true" : "false");}cJSON_Delete(jsonObj); // 释放jsonObj内存} else {printf("JSON parsing failed!\n");}return 0;
}

3.2 解析JSON数组

要解析JSON中的数组,可以使用以下API:

cJSON *cJSON_Parse(const char *value);
cJSON *cJSON_GetArrayItem(const cJSON *array, int index);

注意事项:

  • 在调用cJSON_Parse后,返回的指针需要通过cJSON_Delete进行内存释放,以防止内存泄漏。
  • 使用cJSON_GetArrayItem根据索引获取JSON数组中的子项。

示例:

{
[ apple,
123,
true
]
}

#include <stdio.h>
#include "cJSON.h"int main() {const char *jsonStr = "[\"apple\", 123, true]";cJSON *jsonArray = cJSON_Parse(jsonStr);if (jsonArray != NULL && cJSON_IsArray(jsonArray)) {int arraySize = cJSON_GetArraySize(jsonArray);for (int i = 0; i < arraySize; i++) {cJSON *item = cJSON_GetArrayItem(jsonArray, i);if (cJSON_IsString(item)) {printf("Array Item %d: %s\n", i, item->valuestring);} else if (cJSON_IsNumber(item)) {printf("Array Item %d: %d\n", i, item->valueint);} else if (cJSON_IsBool(item)) {printf("Array Item %d: %s\n", i, item->valueint ? "true" : "false");}}cJSON_Delete(jsonArray); // 释放jsonArray内存} else {printf("JSON parsing failed!\n");}return 0;
}
http://www.hrbkazy.com/news/9793.html

相关文章:

  • 宜昌小程序开发公司最好的优化公司
  • 一佰互联自助建站如何进行网络推广和宣传
  • 代理网关app未运行网站搜索引擎优化的步骤
  • 在线设计平台的发展趋势seo免费课程
  • 官方网页qq登陆邯郸网站seo
  • 微网站公司移动建站模板
  • 自己做网站的流程视频教程应用下载app排行榜
  • 网站建设与管理学什么网站快速收录教程
  • 建设免费网站2022年7到8月份的十大新闻
  • 做网站销售水果网站seo优化免费
  • 旅游公司网站建设40个免费靠谱网站
  • 济南建设项目竣工验收公示网站中国今天最新军事新闻
  • 如何设计一个logoseo优化的主要任务
  • 手机兼职在哪个网站做网店如何做推广
  • 20g虚拟主机建设网站win10优化工具
  • 海外网站建设谷歌浏览器下载安装2022
  • 自己做网站要会什么软件下载各大网站收录提交入口
  • windows2008 建网站怎么做平台推广
  • 做网站如何防止被坑企业门户网站的设计与实现
  • 网站建设特效大全seo常用工具网站
  • 日本建设物价调查会网站月嫂免费政府培训中心
  • 做设计网站的工作怎么样的常见的系统优化软件
  • 用h5做网站首页代码关键路径
  • 广告图片 海报关键词优化的方法有哪些
  • 做网站什么内容网站建设找哪家好
  • 广州云脑网站建设网站友情链接查询
  • wordpress边栏扩大尺寸优化设计电子版
  • 做网站订阅号深圳百度竞价托管公司
  • 创意网站建设话术免费制作自己的网站
  • 服装业网站建设的策划电商平台推广方式有哪些