在嵌入式开发、系统编程或资源受限的环境中,我们经常需要处理来自网络或配置文件的 JSON 数据。然而,C 语言本身并不内置 JSON 解析功能,这就需要借助第三方库或自己实现解析逻辑。本文将带你从零开始,使用一个轻量级的 C 语言 JSON 库——cJSON,完成 JSON 数据的解析。无论你是初学者还是有一定经验的开发者,都能轻松上手!
cJSON 是一个开源、轻量、易于集成的 C 语言 JSON 库,由 Dave Gamble 开发。它具有以下优点:
你可以从 cJSON 的 GitHub 仓库下载源码:
https://github.com/DaveGamble/cJSON
下载后,将 cJSON.c 和 cJSON.h 文件复制到你的项目目录中,并在你的 C 源文件中包含头文件:
#include "cJSON.h"#include <stdio.h>#include <stdlib.h>#include <string.h>
假设我们有如下 JSON 字符串:
{ "name": "张三", "age": 28, "is_student": false, "courses": ["数学", "物理"]} 我们要从中提取 name、age 等字段。以下是完整的 C 语言代码:
#include "cJSON.h"#include <stdio.h>#include <stdlib.h>#include <string.h>int main() { // 定义 JSON 字符串 const char* json_str = "{\n" " \"name\": \"张三\",\n" " \"age\": 28,\n" " \"is_student\": false,\n" " \"courses\": [\"数学\", \"物理\"]\n" "}"; // 解析 JSON 字符串 cJSON *root = cJSON_Parse(json_str); if (root == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "JSON 解析错误: %s\n", error_ptr); } return EXIT_FAILURE; } // 获取 name 字段 cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); if (cJSON_IsString(name) && (name->valuestring != NULL)) { printf("姓名: %s\n", name->valuestring); } // 获取 age 字段 cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); if (cJSON_IsNumber(age)) { printf("年龄: %d\n", age->valueint); } // 获取 is_student 字段 cJSON *is_student = cJSON_GetObjectItemCaseSensitive(root, "is_student"); if (cJSON_IsBool(is_student)) { printf("是否学生: %s\n", cJSON_IsTrue(is_student) ? "是" : "否"); } // 遍历 courses 数组 cJSON *courses = cJSON_GetObjectItemCaseSensitive(root, "courses"); if (cJSON_IsArray(courses)) { printf("课程列表:\n"); cJSON *course; cJSON_ArrayForEach(course, courses) { if (cJSON_IsString(course)) { printf(" - %s\n", course->valuestring); } } } // 释放内存 cJSON_Delete(root); return EXIT_SUCCESS;} 将上述代码保存为 main.c,然后使用以下命令编译(假设 cJSON.c 与 main.c 在同一目录):
gcc main.c cJSON.c -o json_parser
运行程序:
./json_parser
你将看到如下输出:
姓名: 张三年龄: 28是否学生: 否课程列表: - 数学 - 物理
cJSON_Parse 后,必须调用 cJSON_Delete 释放内存,否则会造成内存泄漏。cJSON_Parse 的返回值,避免程序崩溃。通过本教程,你已经掌握了如何在 C 语言中使用 cJSON 库进行 C语言JSON解析。无论是开发 嵌入式JSON解析 应用,还是处理配置文件,cJSON 都是一个高效可靠的选择。希望你能将所学应用到实际项目中,提升开发效率!
如果你正在寻找一个 轻量级JSON库 来处理 C语言解析JSON数据 的任务,cJSON 绝对值得尝试。
本文由主机测评网于2025-12-15发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025128096.html