我使用的是cJSON:
http://sourceforge.net/projects/cjson/
先看json的数据结构
c中没有对象,所以json数据是采用链表存储的
typedef struct cJSON {
struct cJSON *next,*prev; // 数组 对象数据中用到
struct cJSON *child; // 数组 和对象中指向子数组对象或值
int type; // 元素的类型,如是对象还是数组
char *valuestring; // 如果是字符串
int valueint; // 如果是数值
double valuedouble; // 如果类型是cJSON_Number
char *string; // The item's name string, if this item is the child of, or is in the list of subitems of an object.
} cJSON;
比如你有一个json数据
{
"name": "Jack (\"Bee\") Nimble",
"format": {
"type": "rect",
"width": 1920,
"height": 1080,
"interlace": false,
"frame rate": 24
}
}
那么你可以
1:讲字符串解析成json结构体。
cJSON *root = cJSON_Parse(my_json_string);
2:获取某个元素
cJSON *format = cJSON_GetObjectItem(root,"format");
int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;
3:讲json结构体转换成字符串
char *rendered=cJSON_Print(root);
4:删除
cJSON_Delete(root);
5:构建一个json结构体
cJSON *root,*fmt;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"type", "rect");
cJSON_AddNumberToObject(fmt,"width", 1920);
cJSON_AddNumberToObject(fmt,"height", 1080);
cJSON_AddFalseToObject (fmt,"interlace");
cJSON_AddNumberToObject(fmt,"frame rate", 24);
分享到:
相关推荐
在C语言环境中,处理JSON数据时,cJson提供了一个简单而高效的解决方案。它允许开发者轻松地将JSON字符串解析为C结构体,同时也支持将C结构体转换为JSON格式的字符串。 ### JSON基础 JSON(JavaScript Object ...
然而,对于C语言这样的静态类型语言,处理JSON数据需要特定的库支持。cJSON库就是这样一个库,专为C语言设计,提供了方便、高效的JSON解析和生成功能。 **一、cJSON库的基本概念** 1. cJSON库介绍:cJSON是由David...
在本场景中,我们关注的是C语言处理JSON数据的连续解析,特别是针对“粘包”问题的解决方案。首先,我们需要理解什么是“粘包”现象。 “粘包”通常发生在网络通信中,当多个数据包连续发送并在接收端合并成一个...
本篇文章将深入探讨如何在C语言中解析JSON数据格式。 1. JSON数据格式基础 JSON格式基于JavaScript语法,但不依赖JavaScript运行环境。其基本结构包括对象(键值对的集合,用花括号{}包围)和数组(有序元素序列,...
标题“C语言版本JSON源码”指的是使用C语言编写的JSON库,这个库提供了解析JSON字符串到C结构体的函数,以及将C结构体转换为JSON字符串的功能。这样的库对于需要与服务器进行JSON数据交换的C应用程序来说是必不可少...
`json-c`就是这样一个专门用于C语言的JSON解析库,它提供了对JSON数据的读取、创建、修改和序列化等功能,使得C程序员可以方便地与JSON格式进行交互。 `json-c`库的核心特性包括: 1. **解析和生成JSON**:`json-c...
本篇文章将深入探讨如何使用C语言解析JSON数据。 在C语言中,没有内置的JSON解析库,但有许多开源库可以帮助我们处理JSON。其中一个常用的库是"cJSON",这个库提供了简单易用的API,用于解析和生成JSON数据。...
本资源提供了一个基于C语言的JSON数据映射解析库,它允许程序员在C程序中方便地处理JSON数据。 在C语言中,处理JSON数据通常涉及到以下几个关键知识点: 1. **字符串处理**:由于JSON主要以文本形式存在,因此理解...
这个库提供了简单易用的API,使得在C语言中处理JSON数据变得可能。cjson的主要目标是提供快速的解析和生成性能,同时保持较小的代码体积,适合嵌入式或者其他资源有限的环境。 在cjson库中,主要包含以下几个核心...
【作品名称】:基于C语言的json数据映射解析库 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: CSON的模型映射借鉴了...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务与客户端之间的数据传输。...通过理解和熟练运用CJSON库,可以极大地提升C语言应用在处理JSON数据时的效率和灵活性。
这个精简的C语言实现,通过解析JSON文本,将键值对转化为C语言中的结构体或字典,便于程序处理。 3. **精简实现** 项目仅有一百多行代码,这意味着它尽可能地减少了内存占用和计算开销,适合资源受限的硬件环境。...
本压缩包提供的"纯C语言json解析"工具,即为一个C语言实现的JSON解析器,它允许开发者在C程序中高效、稳定地解析和生成JSON数据。 首先,让我们深入理解JSON的基本结构。JSON由键值对构成,键必须是字符串,用双...
总的来说,这个C语言的JSON格式校验代码提供了一种实用的方法来验证JSON数据的格式。开发者可以将此代码集成到他们的项目中,以确保接收到的JSON数据符合标准,避免因数据格式错误导致的程序异常。理解并使用这个库...
在C语言中实现JSON的创建和解析,可以帮助开发者在C环境中与JSON数据进行交互,这对于网络通信、数据存储和配置文件等场景尤其有用。 本项目提供了一套C语言实现的JSON库——CJson,它包含了`.C`源代码文件和`.h`...
基于C语言的json数据映射解析库项目资源
解析JSON字符串的过程是将JSON文本转换为C语言的数据结构。这通常需要遍历输入的JSON字符串,识别各种数据类型,并构建相应的C结构体或数据数组。例如,对于一个JSON对象,可以创建一个结构体,包含一系列的键值对...
`example`文件夹中的`simple.c`是测试代码,展示了如何使用jsmn库解析JSON数据。首先,它会包含`jsmn.h`,然后进行以下步骤: 1. 分配足够的令牌池,以容纳可能的JSON元素。 2. 调用`jsmn_init`初始化解析器。 3. ...
- 在配置文件处理中,JSON因其可读性强而被广泛采用,可以使用C语言解析和生成配置信息。 - 在数据序列化和反序列化场景,JSON作为一种跨平台的标准格式,方便数据在不同系统间交换。 总之,C语言处理JSON字符串...