CSON使用实例
声明结构体:
/** 项目结构体 */
struct project
{
int id;
char *name;
};
/** 仓库结构体 */
struct hub
{
int id;
char *user;
struct project *cson;
};
定义数据模型:
对每一个需要使用cson的结构体,都需要定义相对应的数据模型
/** 项目结构体数据模型 */
CsonModel projectModel[] =
{
CSON_MODEL_OBJ(struct project),
CSON_MODEL_INT(struct project, id),
CSON_MODEL_STRING(struct project, name),
};
/** 仓库结构体数据模型 */
CsonModel hubModel[] =
{
CSON_MODEL_OBJ(struct hub),
CSON_MODEL_INT(struct hub, id),
CSON_MODEL_STRING(struct hub, user),
CSON_MODEL_STRUCT(struct hub, cson, projectModel, sizeof(projectModel)/sizeof(CsonModel))
};
使用CSON解析:
只需要定义好数据模型,就可以使用CSON读json进行序列化和反序列化
void csonDemo(void)
{
char *jsonDemo = "{"id": 1, "user": "Letter", "cson": {"id": 2, "name": "cson"}}";
/** 解析json */
struct hub *pHub = csonDecode(jsonDemo, hubModel, sizeof(hubModel)/sizeof(CsonModel));
printf("hub: id: %d, user: %s, project id: %d, project name: %srn",
pHub- >id, pHub- >user, pHub- >cson- >id, pHub- >cson- >name);
/** 序列化对象 */
char *formatJson = csonEncodeFormatted(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));
printf("format json: %srn", formatJson);
/** 释放结构体对象 */
csonFree(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));
/** 释放序列化生成的json字符串 */
csonFreeJson(formatJson);
}
运行结果:
hub: id: 1, user: Letter, project id: 2, project name: cson
format json: {
"id": 1,
"user": "Letter",
"cson": {
"id": 2,
"name": "cson"
}
}
可以看到,无论是解析json,还是序列化结构体到json,在使用CSON的情况下,都只需要一行代码就可以解决,同样的操作,在使用原生cJSON的情况下,你可能需要多次判断,解析元素。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
数据
+关注
关注
8文章
7048浏览量
89070 -
C语言
+关注
关注
180文章
7605浏览量
136903 -
模型
+关注
关注
1文章
3248浏览量
48860 -
结构体
+关注
关注
1文章
130浏览量
10847
发布评论请先 登录
相关推荐
基于面向对象数据模型的信息管理系统
探讨了面向对象数据模型信息管理系统的结构设计和信息管理系统实现技术。系统设计采用面向对象数据模型,数据库结构采用对象-关系数据库。结合一个典型的教务信息管理系
发表于 02-21 11:35
•14次下载
什么是层次数据模型、数据流量分析
什么是层次数据模型
用层次结构表示实体类型及实体间联系的数据模型称为层次数据模型(hierarchical datamodel)。层次结构是树结构,树的结点是记录类型,非根结点有且
发表于 06-17 08:13
•1568次阅读
什么是ActiveDirectory数据模型、数字数据网络
什么是ActiveDirectory数据模型
从 LDAP 数据模型演化而来的模型。该目录用来保存对象,这些对象代表了由属性描述的各种端口的实体。在架构中定义了可以存储在目录中
发表于 06-17 08:13
•1090次阅读
数据模型概念及类型划分
数据(data)是描述事物的符号记录。模型(Model)是现实世界的抽象。数据模型(Data Model)是数据特征的抽象,是数据库管理
发表于 08-03 15:05
•8104次阅读
概率XML数据模型的综述
首先介绍了概率XML数据管理技术的概念,特点和挑战;其次综述了概率XML数据和概率XML数据模型,各种模型的核心思想都来自于可能世界模型,通
发表于 12-26 11:08
•20次下载
共享系统数据模型
传统共享系统数据模型的建模方法在语义性质分析和语义行为描述方面存在不足,针对以上问题提出了一种基于Fibrations理论的共享系统数据模型。主要工作体现在两个方面:首先,应用真值函子、保持真值
发表于 11-17 14:46
•8次下载
Cassandra数据模型设计指南
本文通过一个简单的实例详细介绍了Cassandra数据建模的五个步骤。我们最近在Instaclustr发表了一篇有关在Cassandra中经常出现的数据建模错误的文章。这篇文章非常受欢迎,并促使我思考如何设计出高质量的Cassa
发表于 11-23 10:47
•2036次阅读
Google Dremel数据模型讲解
首先简单介绍一下 Dremel 是什么,能解决什么问题。第二部分着重讲 Dremel 的数据模型,即数据结构。第三部分将谈一下在此数据结构上设计的算法。Dremel 的数据模型起源于分
发表于 11-28 17:05
•4334次阅读
数据模型有哪些种类
数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型
智能电网的数据模型标准
数据模型标准可以在智能电网架构模型的信息层表示。将数据模型从通信协议和技术中解耦的概念,被越来越多地应用于电力系统相关的标准化工作中。通过引入的数据模型和通信服务之间的适配层[如IEC
发表于 06-10 14:46
•1407次阅读
详谈Python的数据模型和对象模型
Python官方文档说法是“Python数据模型”,大多数Python书籍作者说法是“Python对象模型”,它们是一个意思,表示“计算机编程语言中对象的属性”。这句话有点抽象,只要知道对象是Python对数据的抽象,在Pyth
Modbus协议的数据模型和地址模型
在使用Modbus协议的时候,经常会遇到诸如40001、30001,10001之类的地址,这些数字代表什么含义呢?这其实是Modbus协议的数据模型和地址模型。
发表于 04-07 09:28
•3499次阅读
Matter的数据模型和开发
在第一篇内容中,我们介绍了智能家居互联标准 Matter会带来什么好处。本文,我们来了解一下Matter的数据模型和开发。
评论