在嵌入式开发、网络通信或配置文件处理中,经常需要在C语言项目中解析或生成JSON数据。然而,C语言本身并不原生支持JSON,因此我们需要借助第三方库。其中,cJSON 是一个轻量、高效且广泛使用的 C语言JSON解析库,非常适合资源受限的环境。
cJSON 是由 Dave Gamble 开发的一个开源 C 库,用于解析和生成 JSON 数据。它代码简洁(仅两个文件:cJSON.c 和 cJSON.h),无外部依赖,非常适合嵌入式系统或小型项目。这也是为什么它成为 嵌入式JSON处理 的首选工具之一。
你可以从 GitHub 官方仓库克隆 cJSON:
git clone https://github.com/DaveGamble/cJSON.git
或者直接下载 cJSON.h 和 cJSON.c 文件,放入你的项目目录中。
将 cJSON.c 加入编译,然后在你的 C 文件中包含头文件:
#include "cJSON.h"#include <stdio.h>#include <stdlib.h>
假设你有一个 JSON 字符串如下:
{ "name": "张三", "age": 28, "is_student": false, "hobbies": ["读书", "编程"]} 下面是如何用 cJSON 解析它:
#include "cJSON.h"#include <stdio.h>#include <string.h>int main() { const char* json_str = "{\"name\":\"张三\",\"age\":28,\"is_student\":false,\"hobbies\":[\"读书\",\"编程\"]}"; // 解析JSON字符串 cJSON *root = cJSON_Parse(json_str); if (root == NULL) { const char *error_ptr = cJSON_GetErrorPtr(); if (error_ptr != NULL) { fprintf(stderr, "解析错误: %s\n", error_ptr); } return 1; } // 获取 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); } // 获取 hobbies 数组 cJSON *hobbies = cJSON_GetObjectItemCaseSensitive(root, "hobbies"); if (cJSON_IsArray(hobbies)) { printf("爱好: "); cJSON *item; cJSON_ArrayForEach(item, hobbies) { if (cJSON_IsString(item)) { printf("%s ", item->valuestring); } } printf("\n"); } // 释放内存 cJSON_Delete(root); return 0;} 这段代码展示了如何安全地提取字符串、数字和数组。注意:使用完后必须调用 cJSON_Delete() 释放内存,避免内存泄漏。
cJSON 也可以用来构建 JSON 对象:
cJSON *root = cJSON_CreateObject();cJSON_AddStringToObject(root, "message", "Hello, cJSON!");cJSON_AddNumberToObject(root, "code", 200);char *json_str = cJSON_Print(root);printf("生成的JSON: %s\n", json_str);free(json_str);cJSON_Delete(root); cJSON_Print() 返回的字符串都需手动 free()。CJSON_HIDE_SYMBOLS 减少符号暴露。通过本教程,你应该已经掌握了如何在 C 语言项目中使用 cJSON 进行 C语言数据解析。无论是解析服务器返回的 JSON,还是生成配置文件,cJSON 都能胜任。它的简洁性和可靠性使其成为 C语言JSON解析库 中的佼佼者。
现在就试试吧!让你的 C 程序也能轻松“读懂”JSON。
本文由主机测评网于2025-12-03发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122182.html