一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CSON使用實(shí)例:定義數(shù)據(jù)模型

麥辣雞腿堡 ? 來(lái)源:CSDN博客 ? 作者:NevermindZZT ? 2023-10-07 11:10 ? 次閱讀

CSON使用實(shí)例

聲明結(jié)構(gòu)體:

/** 項(xiàng)目結(jié)構(gòu)體 */
struct project
{
    int id;
    char *name;
};

/** 倉(cāng)庫(kù)結(jié)構(gòu)體 */
struct hub
{
    int id;
    char *user;
    struct project *cson;
};

定義數(shù)據(jù)模型:

對(duì)每一個(gè)需要使用cson的結(jié)構(gòu)體,都需要定義相對(duì)應(yīng)的數(shù)據(jù)模型

/** 項(xiàng)目結(jié)構(gòu)體數(shù)據(jù)模型 */
CsonModel projectModel[] =
{
    CSON_MODEL_OBJ(struct project),
    CSON_MODEL_INT(struct project, id),
    CSON_MODEL_STRING(struct project, name),
};

/** 倉(cāng)庫(kù)結(jié)構(gòu)體數(shù)據(jù)模型 */
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解析:

只需要定義好數(shù)據(jù)模型,就可以使用CSON讀json進(jìn)行序列化和反序列化

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);

    /** 序列化對(duì)象 */
    char *formatJson = csonEncodeFormatted(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));
    printf("format json: %srn", formatJson);

    /** 釋放結(jié)構(gòu)體對(duì)象 */
    csonFree(pHub, hubModel, sizeof(hubModel)/sizeof(CsonModel));

    /** 釋放序列化生成的json字符串 */
    csonFreeJson(formatJson);
}

運(yùn)行結(jié)果:

hub: id: 1, user: Letter, project id: 2, project name: cson
format json: {
        "id":   1,
        "user": "Letter",
        "cson": {
                "id":   2,
                "name": "cson"
        }
}

可以看到,無(wú)論是解析json,還是序列化結(jié)構(gòu)體到j(luò)son,在使用CSON的情況下,都只需要一行代碼就可以解決,同樣的操作,在使用原生cJSON的情況下,你可能需要多次判斷,解析元素。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7233

    瀏覽量

    90786
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7628

    瀏覽量

    139822
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3469

    瀏覽量

    49843
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    130

    瀏覽量

    11008
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于面向?qū)ο?b class='flag-5'>數(shù)據(jù)模型的信息管理系統(tǒng)

    探討了面向?qū)ο?b class='flag-5'>數(shù)據(jù)模型信息管理系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)和信息管理系統(tǒng)實(shí)現(xiàn)技術(shù)。系統(tǒng)設(shè)計(jì)采用面向?qū)ο?b class='flag-5'>數(shù)據(jù)模型,數(shù)據(jù)庫(kù)結(jié)構(gòu)采用對(duì)象-關(guān)系數(shù)據(jù)庫(kù)。結(jié)合一個(gè)典型的教務(wù)信息管理系
    發(fā)表于 02-21 11:35 ?14次下載

    什么是層次數(shù)據(jù)模型、數(shù)據(jù)流量分析

    什么是層次數(shù)據(jù)模型 用層次結(jié)構(gòu)表示實(shí)體類(lèi)型及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱(chēng)為層次數(shù)據(jù)模型(hierarchical datamodel)。層次結(jié)構(gòu)是樹(shù)結(jié)構(gòu),樹(shù)的結(jié)點(diǎn)是記錄類(lèi)型,非根結(jié)點(diǎn)有且
    發(fā)表于 06-17 08:13 ?1614次閱讀

    什么是ActiveDirectory數(shù)據(jù)模型、數(shù)字數(shù)據(jù)網(wǎng)絡(luò)

    什么是ActiveDirectory數(shù)據(jù)模型 從 LDAP 數(shù)據(jù)模型演化而來(lái)的模型。該目錄用來(lái)保存對(duì)象,這些對(duì)象代表了由屬性描述的各種端口的實(shí)體。在架構(gòu)中定義了可以存儲(chǔ)在目錄中
    發(fā)表于 06-17 08:13 ?1126次閱讀

    數(shù)據(jù)模型概念及類(lèi)型劃分

      數(shù)據(jù)(data)是描述事物的符號(hào)記錄。模型(Model)是現(xiàn)實(shí)世界的抽象。數(shù)據(jù)模型(Data Model)是數(shù)據(jù)特征的抽象,是數(shù)據(jù)庫(kù)管理
    發(fā)表于 08-03 15:05 ?8184次閱讀

    概率XML數(shù)據(jù)模型的綜述

    首先介紹了概率XML數(shù)據(jù)管理技術(shù)的概念,特點(diǎn)和挑戰(zhàn);其次綜述了概率XML數(shù)據(jù)和概率XML數(shù)據(jù)模型,各種模型的核心思想都來(lái)自于可能世界模型,通
    發(fā)表于 12-26 11:08 ?20次下載
    概率XML<b class='flag-5'>數(shù)據(jù)模型</b>的綜述

    共享系統(tǒng)數(shù)據(jù)模型

    傳統(tǒng)共享系統(tǒng)數(shù)據(jù)模型的建模方法在語(yǔ)義性質(zhì)分析和語(yǔ)義行為描述方面存在不足,針對(duì)以上問(wèn)題提出了一種基于Fibrations理論的共享系統(tǒng)數(shù)據(jù)模型。主要工作體現(xiàn)在兩個(gè)方面:首先,應(yīng)用真值函子、保持真值
    發(fā)表于 11-17 14:46 ?8次下載
    共享系統(tǒng)<b class='flag-5'>數(shù)據(jù)模型</b>

    Cassandra數(shù)據(jù)模型設(shè)計(jì)指南

    本文通過(guò)一個(gè)簡(jiǎn)單的實(shí)例詳細(xì)介紹了Cassandra數(shù)據(jù)建模的五個(gè)步驟。我們最近在Instaclustr發(fā)表了一篇有關(guān)在Cassandra中經(jīng)常出現(xiàn)的數(shù)據(jù)建模錯(cuò)誤的文章。這篇文章非常受歡迎,并促使我思考如何設(shè)計(jì)出高質(zhì)量的Cassa
    發(fā)表于 11-23 10:47 ?2122次閱讀

    Google Dremel數(shù)據(jù)模型講解

    首先簡(jiǎn)單介紹一下 Dremel 是什么,能解決什么問(wèn)題。第二部分著重講 Dremel 的數(shù)據(jù)模型,即數(shù)據(jù)結(jié)構(gòu)。第三部分將談一下在此數(shù)據(jù)結(jié)構(gòu)上設(shè)計(jì)的算法。Dremel 的數(shù)據(jù)模型起源于分
    發(fā)表于 11-28 17:05 ?4466次閱讀
    Google Dremel<b class='flag-5'>數(shù)據(jù)模型</b>講解

    數(shù)據(jù)模型的概念和作用

    數(shù)據(jù)模型(DataModel)是現(xiàn)實(shí)世界數(shù)據(jù)特征的抽象,或者說(shuō)是現(xiàn)實(shí)世界的數(shù)據(jù)模擬。數(shù)據(jù)庫(kù)中,用數(shù)據(jù)模型來(lái)抽象地表示現(xiàn)實(shí)世界的
    的頭像 發(fā)表于 02-28 15:55 ?1.7w次閱讀

    數(shù)據(jù)模型的三要素

    本視頻主要詳細(xì)介紹了數(shù)據(jù)模型的三要素,分別是數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。
    的頭像 發(fā)表于 02-28 15:57 ?2.3w次閱讀

    數(shù)據(jù)模型有哪些種類(lèi)

    數(shù)據(jù)庫(kù)的類(lèi)型是根據(jù)數(shù)據(jù)模型來(lái)劃分的,而任何一個(gè)DBMS也是根據(jù)數(shù)據(jù)模型有針對(duì)性地設(shè)計(jì)出來(lái)的,這就意味著必須把數(shù)據(jù)庫(kù)組織成符合DBMS規(guī)定的數(shù)據(jù)模型
    的頭像 發(fā)表于 02-28 16:00 ?2.9w次閱讀

    智能電網(wǎng)的數(shù)據(jù)模型標(biāo)準(zhǔn)

    數(shù)據(jù)模型標(biāo)準(zhǔn)可以在智能電網(wǎng)架構(gòu)模型的信息層表示。將數(shù)據(jù)模型從通信協(xié)議和技術(shù)中解耦的概念,被越來(lái)越多地應(yīng)用于電力系統(tǒng)相關(guān)的標(biāo)準(zhǔn)化工作中。通過(guò)引入的數(shù)據(jù)模型和通信服務(wù)之間的適配層[如IEC
    發(fā)表于 06-10 14:46 ?1536次閱讀

    詳談Python的數(shù)據(jù)模型和對(duì)象模型

    Python官方文檔說(shuō)法是“Python數(shù)據(jù)模型”,大多數(shù)Python書(shū)籍作者說(shuō)法是“Python對(duì)象模型”,它們是一個(gè)意思,表示“計(jì)算機(jī)編程語(yǔ)言中對(duì)象的屬性”。這句話有點(diǎn)抽象,只要知道對(duì)象是Python對(duì)數(shù)據(jù)的抽象,在Pyth
    的頭像 發(fā)表于 02-10 15:59 ?2720次閱讀
    詳談Python的<b class='flag-5'>數(shù)據(jù)模型</b>和對(duì)象<b class='flag-5'>模型</b>

    Modbus協(xié)議的數(shù)據(jù)模型和地址模型

    在使用Modbus協(xié)議的時(shí)候,經(jīng)常會(huì)遇到諸如40001、30001,10001之類(lèi)的地址,這些數(shù)字代表什么含義呢?這其實(shí)是Modbus協(xié)議的數(shù)據(jù)模型和地址模型。
    發(fā)表于 04-07 09:28 ?3646次閱讀

    Matter的數(shù)據(jù)模型和開(kāi)發(fā)

    在第一篇內(nèi)容中,我們介紹了智能家居互聯(lián)標(biāo)準(zhǔn) Matter會(huì)帶來(lái)什么好處。本文,我們來(lái)了解一下Matter的數(shù)據(jù)模型和開(kāi)發(fā)。
    的頭像 發(fā)表于 12-01 10:18 ?1660次閱讀