上一篇
本文目录导读:
🚀 C语言 | JSON解析 | 如何使用cjson库进行高效数据解析与处理方法 🚀
cJSON是专为C语言设计的超轻量级JSON解析库,仅需cJSON.h
和cJSON.c
两个文件即可集成,它支持ANSI C标准,内存占用极小,非常适合嵌入式系统和高效数据处理场景。
#include "cJSON.h" // 创建根对象 cJSON *root = cJSON_CreateObject(); // 添加基本类型 cJSON_AddStringToObject(root, "name", "John Doe"); cJSON_AddNumberToObject(root, "age", 30); cJSON_AddBoolToObject(root, "is_student", 0); // 0=false, 1=true // 添加嵌套对象 cJSON *address = cJSON_CreateObject(); cJSON_AddStringToObject(address, "city", "New York"); cJSON_AddItemToObject(root, "address", address); // 生成JSON字符串 char *json_str = cJSON_Print(root); printf("Generated JSON:\n%s\n", json_str); // 清理内存 free(json_str); cJSON_Delete(root);
const char *json_string = "{\"name\":\"Alice\",\"age\":25}"; cJSON *root = cJSON_Parse(json_string); if (root) { cJSON *name = cJSON_GetObjectItem(root, "name"); printf("Name: %s\n", name->valuestring); cJSON_Delete(root); } else { const char *error_ptr = cJSON_GetErrorPtr(); printf("Error before: %s\n", error_ptr); }
cJSON *name = cJSON_GetObjectItem(root, "name"); cJSON_SetStringValue(name, "Bob"); // 修改字符串值 cJSON_SetNumberValue(age, 25); // 修改数字值
cJSON_Delete(obj)
递归释放整个JSON树。cJSON_PrintUnformatted()
生成无缩进字符串,节省内存。char *compact_str = cJSON_PrintUnformatted(root);
// 遍历数组 cJSON *array = cJSON_GetObjectItem(root, "hobbies"); int size = cJSON_GetArraySize(array); for (int i=0; i<size; i++) { cJSON *item = cJSON_GetArrayItem(array, i); printf("- %s\n", item->valuestring); }
cJSON *age = cJSON_GetObjectItem(root, "age"); if (cJSON_IsNumber(age)) { printf("Age: %d\n", age->valueint); }
// 预解析常用结构,复用对象 cJSON *cached_obj = cJSON_Parse(cached_json_str); // 修改后重新生成字符串 char *new_str = cJSON_Print(cached_obj);
cJSON *address = cJSON_GetObjectItem(root, "address"); cJSON *city = cJSON_GetObjectItem(address, "city"); printf("City: %s\n", city->valuestring);
cJSON *scores = cJSON_CreateArray(); cJSON_AddItemToArray(scores, cJSON_CreateNumber(90)); cJSON_AddItemToArray(scores, cJSON_CreateNumber(85));
https://github.com/DaveGamble/cJSON
),确保兼容最新C标准。cJSON_PrintUnformatted()
替代cJSON_Print()
,内存占用减少40%以上。cJSON_Parse
返回值,结合cJSON_GetErrorPtr()
定位语法错误。cJSON以极简设计和高效性能成为C语言JSON处理的首选库,通过合理使用内存管理、类型检查和批量操作,可轻松实现每秒解析数千个JSON对象的高效数据处理! 🚀
📖 参考来源:
本文由 业务大全 于2025-08-22发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://cloud.7tqx.com/wenda/691679.html
发表评论