您的位置:首页 > 健康 > 养生 > 网页设计作业宽度1366768_网上创建公司流程_找培训机构的平台_手机百度一下

网页设计作业宽度1366768_网上创建公司流程_找培训机构的平台_手机百度一下

2025/4/10 7:42:13 来源:https://blog.csdn.net/fengyunzhenyu/article/details/146922497  浏览:    关键词:网页设计作业宽度1366768_网上创建公司流程_找培训机构的平台_手机百度一下
网页设计作业宽度1366768_网上创建公司流程_找培训机构的平台_手机百度一下

第二部分:cJSON 处理 JSON(轻量级 C 语言库)

📢 快速掌握 cJSON!文章 + 视频双管齐下 🚀

如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 cJSON 课程视频!🎬 视频里会用更直观的方式讲解 cJSON 的核心概念、实战技巧,并配有动手演示,让你更高效地掌握 JSON 的处理方法!

当然,如果你喜欢深度阅读,这篇文章会帮助你系统地理解 cJSON,从基础到进阶!无论你选择哪种方式,最终目标都是让你成为 cJSON 处理的高手!💪

🎥 点击这里观看视频 👉 视频链接

一:cJSON 库概述与环境配置

1.1 cJSON 简介(特点、适用场景)
  • cJSON 是一个轻量级开源的 C 语言 JSON 解析库,专门用于处理 JSON 格式数据。它具有以下特点:
    • 简单易用,API 设计清晰,代码可读性强。
    • 轻量级,适用于嵌入式系统、物联网(IoT)等对资源敏感的应用场景。
    • 无需额外依赖,仅需一个 cJSON.ccJSON.h 文件即可使用。
1.2 下载和安装 cJSON

方法 1:直接下载 cJSON 源码

  1. 从 cJSON 官方 GitHub 下载 cJSON.hcJSON.c

    https://github.com/DaveGamble/cJSON

  2. 在项目中包含 cJSON.h:

    #include "cJSON.h"
    
  3. 编译时需链接 cJSON.c:

    gcc main.c cJSON.c -o main
    

方法 2:使用 CMake 进行安装

  1. 克隆 cJSON 源码:

    git clone https://github.com/DaveGamble/cJSON.git
    cd cJSON
    
  2. 使用 CMake 编译:

    mkdir build
    cd build
    cmake ..
    make
    sudo make install 
    # 头文件 /usr/local/include 或 /usr/include
    # 库文件 /usr/local/lib 或 /usr/lib
    # execute /usr/local/bin 或 /usr/bin
    
1.3 在 C 语言项目中集成 cJSON(CMake / 手动编译)

示例代码:CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(cJSONExample)add_executable(cjson_test main.c cJSON.c)
1.4 cJSON 数据类型

cJSON 提供了多种数据类型来处理不同的 JSON 数据。下面列出所有可用的类型:

类型描述示例
cJSON_False代表 JSON 中的 falsefalse
cJSON_True代表 JSON 中的 truetrue
cJSON_NULL代表 JSON 中的 nullnull
cJSON_Number代表 JSON 中的数字123, -45.67
cJSON_String代表 JSON 中的字符串"Hello, world!"
cJSON_Array代表 JSON 中的数组[1, 2, 3]
cJSON_Object代表 JSON 中的对象{"name": "Alice"}
cJSON_Raw代表 JSON 中的原始值(不进行转义)"\\u1234"

二:使用 cJSON 解析 JSON

  • 加载 JSON 数据(字符串)
  • 解析 JSON 字符串为 cJSON 对象
  • 访问 JSON 对象的键值对
  • 遍历 JSON 数组

讲解内容

解析 JSON 字符串

  • cJSON_Parse() 将 JSON 字符串转换为 cJSON 结构体对象。
  • 访问 JSON 数据(字符串、数值、布尔值、数组、对象)。
2.1 加载 JSON 字符串
  • cJSON 提供了 cJSON_Parse 来将 JSON 字符串解析为 cJSON 对象。

  • cJSON_Print来输出,将cJSON item/实体/结构渲染为文本

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"int main() {// JSON 字符串const char *json_str = "{\"name\":\"Alice\",\"age\":25,\"is_student\":false}";// 解析 JSON 字符串cJSON *json = cJSON_Parse(json_str);if (json == NULL) {printf("解析失败!\n");return -1;}// 打印解析后的 JSON 对象char *printed_json = cJSON_Print(json);printf("解析后的 JSON: %s\n", printed_json);// 释放内存cJSON_Delete(json);free(printed_json);return 0;
}
2.2 解析 JSON 字符串
  • 通过 cJSON_GetObjectItem 来获取指定键的值,并根据其类型进一步处理。

📌 示例 1:解析一个简单 JSON

{"name": "张三","age": 28,"married": false
}

C 代码解析 JSON

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"int main() {// JSON 字符串const char *json_str = "{\"name\": \"张三\", \"age\": 28, \"married\": false}";// 解析 JSONcJSON *root = cJSON_Parse(json_str);if (root == NULL) {printf("JSON 解析失败!\n");return -1;}// 读取 name 字段cJSON *name = cJSON_GetObjectItem(root, "name");if (cJSON_IsString(name)) {printf("姓名: %s\n", name->valuestring);}// 读取 age 字段cJSON *age = cJSON_GetObjectItem(root, "age");if (cJSON_IsNumber(age)) {printf("年龄: %d\n", age->valueint);}// 读取 married 字段cJSON *married = cJSON_GetObjectItem(root, "married");if (cJSON_IsBool(married)) {printf("已婚: %s\n", married->valueint ? "是" : "否");}// 释放 JSON 内存cJSON_Delete(root);return 0;
}

输出结果

姓名: 张三
年龄: 28
已婚: 否
2.3 解析 JSON 数组

📌 示例 2:解析数组

{"fruits": ["苹果", "香蕉", "葡萄"]
}

C 代码解析 JSON 数组

const char *json_str = "{ \"fruits\": [\"苹果\", \"香蕉\", \"葡萄\"] }";
cJSON *root = cJSON_Parse(json_str);
cJSON *fruits = cJSON_GetObjectItem(root, "fruits");if (cJSON_IsArray(fruits)) {int array_size = cJSON_GetArraySize(fruits);for (int i = 0; i < array_size; i++) {cJSON *item = cJSON_GetArrayItem(fruits, i);printf("水果 %d: %s\n", i + 1, item->valuestring);}
}

输出

水果 1: 苹果
水果 2: 香蕉
水果 3: 葡萄
2.4 解析 JSON 文件

📌 示例 4:读取 JSON 文件

  1. 创建 config.json
{"server": "192.168.1.1","port": 8080,"debug": true
}
  1. C 代码解析 JSON 文件
FILE *file = fopen("config.json", "r");
if (!file) {printf("无法打开文件\n");return -1;
}char buffer[1024];
fread(buffer, 1, sizeof(buffer), file);
fclose(file);cJSON *root = cJSON_Parse(buffer);
printf("服务器: %s\n", cJSON_GetObjectItem(root, "server")->valuestring);
printf("端口: %d\n", cJSON_GetObjectItem(root, "port")->valueint);
printf("调试模式: %s\n", cJSON_GetObjectItem(root, "debug")->valueint ? "开启" : "关闭");cJSON_Delete(root);

输出

服务器: 192.168.1.1
端口: 8080
调试模式: 开启

重点知识

cJSON_Parse() 解析 JSON
✅ 访问 JSON 数据的方法(对象和数组)
✅ 释放 cJSON 解析后的内存(cJSON_Delete()

学习目标

  • 能够使用 cJSON 解析 JSON 字符串。
  • 掌握 cJSON 访问 JSON 数据的 API。
  • 了解 JSON 解析后如何正确释放内存。

三:创建、修改、删除 JSON数据

  • 创建 JSON 对象和数组
  • 动态添加/删除键值对
  • 修改 JSON 数据
  • 格式化 JSON 输出

讲解内容

创建 JSON 对象

  • cJSON_CreateObject() 创建 JSON 对象。
  • cJSON

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com