0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CSON使用实例:定义数据模型

麦辣鸡腿堡 来源:CSDN博客 作者:NevermindZZT 2023-10-07 11:10 次阅读

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

    文章

    6512

    浏览量

    87601
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128769
  • 模型
    +关注

    关注

    1

    文章

    2704

    浏览量

    47689
  • 结构体
    +关注

    关注

    1

    文章

    125

    浏览量

    10750
收藏 人收藏

    评论

    相关推荐

    什么是层次数据模型数据流量分析

    什么是层次数据模型 用层次结构表示实体类型及实体间联系的数据模型称为层次数据模型(hierarchical datamodel)。层次结构是树结构,树的结点是记录类型,非根结点有且
    发表于 06-17 08:13 1448次阅读

    什么是ActiveDirectory数据模型、数字数据网络

    什么是ActiveDirectory数据模型 从 LDAP 数据模型演化而来的模型。该目录用来保存对象,这些对象代表了由属性描述的各种端口的实体。在架构中定义了可以存储在目录中
    发表于 06-17 08:13 964次阅读

    数据模型概念及类型划分

      数据(data)是描述事物的符号记录。模型(Model)是现实世界的抽象。数据模型(Data Model)是数据特征的抽象,是数据库管理
    发表于 08-03 15:05 7888次阅读

    概率XML数据模型的综述

    首先介绍了概率XML数据管理技术的概念,特点和挑战;其次综述了概率XML数据和概率XML数据模型,各种模型的核心思想都来自于可能世界模型,通
    发表于 12-26 11:08 20次下载
    概率XML<b class='flag-5'>数据模型</b>的综述

    MATLAB空间面板数据模型操作简介

    关于MATLAB的基本数据模型操作,有关的一些入门知识,如有需要的可点击下载
    发表于 03-24 17:55 0次下载

    Cassandra数据模型设计指南

    本文通过一个简单的实例详细介绍了Cassandra数据建模的五个步骤。我们最近在Instaclustr发表了一篇有关在Cassandra中经常出现的数据建模错误的文章。这篇文章非常受欢迎,并促使我思考如何设计出高质量的Cassa
    发表于 11-23 10:47 1913次阅读

    Google Dremel数据模型讲解

    首先简单介绍一下 Dremel 是什么,能解决什么问题。第二部分着重讲 Dremel 的数据模型,即数据结构。第三部分将谈一下在此数据结构上设计的算法。Dremel 的数据模型起源于分
    发表于 11-28 17:05 4011次阅读
    Google Dremel<b class='flag-5'>数据模型</b>讲解

    数据模型的概念和作用

    数据模型(DataModel)是现实世界数据特征的抽象,或者说是现实世界的数据模拟。数据库中,用数据模型来抽象地表示现实世界的
    的头像 发表于 02-28 15:55 1.5w次阅读

    数据模型的三要素

    本视频主要详细介绍了数据模型的三要素,分别是数据结构、数据操作和数据约束。
    的头像 发表于 02-28 15:57 2.1w次阅读

    数据模型有哪些种类

    数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型
    的头像 发表于 02-28 16:00 2.8w次阅读

    智能电网的数据模型标准

    数据模型标准可以在智能电网架构模型的信息层表示。将数据模型从通信协议和技术中解耦的概念,被越来越多地应用于电力系统相关的标准化工作中。通过引入的数据模型和通信服务之间的适配层[如IEC
    发表于 06-10 14:46 1174次阅读

    一文带你看懂为什么Smartbi V10要打造全新的数据模型

    首先,要搞清楚什么是“数据模型”? 现实世界中的事物要让计算机进行管理,必须通过“数据模型”对其进行抽象、模拟,然后再存放在数据库系统里面。 数据模型有不同的建模方法,最常见的就是“范
    发表于 09-07 11:48 647次阅读
    一文带你看懂为什么Smartbi V10要打造全新的<b class='flag-5'>数据模型</b>?

    Modbus协议的数据模型和地址模型

    在使用Modbus协议的时候,经常会遇到诸如40001、30001,10001之类的地址,这些数字代表什么含义呢?这其实是Modbus协议的数据模型和地址模型
    发表于 04-07 09:28 2939次阅读

    什么是数据模型以及它如何应用于PICMG IoT.1

      对于初学者来说,数据模型是一种结构化的数据组织方式,其中包含有关如何打包数据的特定规则或说明。在处理大量数据的情况下,数据模型有助于保持
    的头像 发表于 11-18 15:15 857次阅读

    Matter的数据模型和开发

    在第一篇内容中,我们介绍了智能家居互联标准 Matter会带来什么好处。本文,我们来了解一下Matter的数据模型和开发。
    的头像 发表于 12-01 10:18 1037次阅读