chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

cJSON在傳統(tǒng)C/S模型的應(yīng)用

共熵服務(wù)中心 ? 來(lái)源:未知 ? 2022-11-24 19:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

8c8a5e28-6be9-11ed-8abf-dac502259ad0.png

文章轉(zhuǎn)發(fā)自51CTO 開(kāi)源基礎(chǔ)軟件社區(qū) OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂(lè)部【FFH】啃論文俱樂(lè)部---JSON壓縮算法解讀

1.關(guān)于作者

大家好!我是來(lái)自深圳技術(shù)大學(xué)FSR Lab(編者注:Falcon Swarm Robotics Lab獵鷹集群機(jī)器人控制實(shí)驗(yàn)室的縮寫)的同學(xué)HagonChan,陳漢武,標(biāo)題FFH就是FSRlab For Harmony!并且我也正在參加OpenHarmony成長(zhǎng)計(jì)劃從論文到開(kāi)源提交研究,以后我們也會(huì)陸續(xù)在這個(gè)社區(qū)記錄學(xué)習(xí)心得和體會(huì)。

在OpenHarmony成長(zhǎng)計(jì)劃啃論文俱樂(lè)部里,F(xiàn)FH小組同學(xué)們與華為、軟通動(dòng)力、潤(rùn)和軟件、拓維信息、深開(kāi)鴻等公司一起,學(xué)習(xí)和研究序列化相關(guān)技術(shù)…

2. 前言

cJSON是一個(gè)用在底層數(shù)據(jù)通信的一個(gè)C語(yǔ)言的JSON數(shù)據(jù)解析庫(kù)。比如在一個(gè)系統(tǒng)底層使用socket方式進(jìn)行通信的時(shí)候,通信兩端就可以用cJSON對(duì)傳遞的JSON數(shù)據(jù)對(duì)象進(jìn)行處理,下面我們來(lái)看看一篇關(guān)于cJSON在傳統(tǒng)C/S(Client/Server)模型的應(yīng)用。

cJSON github 開(kāi)源地址如下:https://github.com/DaveGamble/cJSON

3. cJSON結(jié)構(gòu)體分析

我們來(lái)看看cJSON的源碼的結(jié)構(gòu)體部分:

/* The cJSON structure: */
typedef struct cJSON
{
    struct cJSON *next;
    struct cJSON *prev;
    struct cJSON *child;
    int type;
    char *valuestring;
    int valueint;
    double valuedouble;
    char *string;
} cJSON;
  • *next/*prev:指向下一條/上一條鍵值對(duì)(key-value)節(jié)點(diǎn)。

  • type:表示該鍵值對(duì)節(jié)點(diǎn)中值的數(shù)據(jù)類型。

  • *valuestring/valueint/valuedouble:如果type為字符串/整型/浮點(diǎn)數(shù)類型,則其指向該鍵值。

  • *string:用于存儲(chǔ)所有鍵(key)的名稱,包括child中的key。

  • *child:當(dāng)值類型為復(fù)雜數(shù)據(jù)結(jié)構(gòu),如數(shù)組,對(duì)象,嵌套JSON等等,則該指針指向該鍵值。

可以看到cJSON是通過(guò)鏈表來(lái)存儲(chǔ)JSON數(shù)據(jù)的,這個(gè)設(shè)計(jì)比較巧妙,相較于JSONcpp,cJSON可以保證寫入的數(shù)據(jù)和輸出的數(shù)據(jù)的順序保持一致,而JSONcpp則不能保證寫入和輸出的順序一致性,因?yàn)樵诖鎯?chǔ)的時(shí)候JSONcpp會(huì)按照key-value進(jìn)行內(nèi)部排序。所以對(duì)于一些要求JSON數(shù)據(jù)順序的業(yè)務(wù),cJSON相對(duì)于JSONcpp就是一個(gè)更好的選擇。

通過(guò)這個(gè)數(shù)據(jù)結(jié)構(gòu)我們也可以知道每一個(gè)JSON對(duì)象里面的鍵值對(duì)都通過(guò)next和prev指針鏈接相鄰的鍵值對(duì)節(jié)點(diǎn),以保證我們剛剛說(shuō)的數(shù)據(jù)順序。

從這個(gè)數(shù)據(jù)結(jié)構(gòu)我們還能看到另外一個(gè)巧妙地地方,就是*child指針,這個(gè)指針讓這個(gè)cJSON支持復(fù)雜數(shù)據(jù)結(jié)構(gòu),比如數(shù)組,對(duì)象,嵌套JSON數(shù)據(jù)對(duì)象等。

cJSON的主要功能接口
功能接口 特性
cJSON_CreateObject() 生成一個(gè)JSON類型的對(duì)象
cJSON_AddStringToObject() 給JSON對(duì)象添加結(jié)構(gòu)屬性
cJSON_GetObjectItem() 獲取JSON對(duì)象每個(gè)屬性的值
cJSON_Print() 將JSON對(duì)象的屬性解析到緩存中
cJSON_Parse()? 字符串被解析為JSON對(duì)象
cJSON_Delete() 釋放創(chuàng)建的JSON對(duì)象

如上表,cJSON庫(kù)里面有很多函數(shù)方法,可以進(jìn)行一系列創(chuàng)建以及處理JSON對(duì)象的操作。

4. 數(shù)據(jù)打包過(guò)程

8cb1f118-6be9-11ed-8abf-dac502259ad0.png

數(shù)據(jù)包在上傳到服務(wù)器之前需要封裝成JSON格式,然后通過(guò)網(wǎng)絡(luò)傳輸。因此,需要?jiǎng)?chuàng)建一個(gè)cJSON類型的對(duì)象,然后調(diào)用cJSON_AddStringToObject()函數(shù),向?qū)ο筇砑有畔⒌膶傩灾?,此時(shí)通過(guò)調(diào)用 cJSON_Print()的函數(shù)將對(duì)象的屬性解析到緩存中,這里可以認(rèn)為將cJSON對(duì)象序列化為字符串,所以實(shí)際上,緩存中存儲(chǔ)了一個(gè)字符串。此時(shí),可以根據(jù)Ascii代碼表將緩存的Ascii值順序轉(zhuǎn)換為十六進(jìn)制數(shù)。最后,將十六進(jìn)制數(shù)發(fā)送到服務(wù)器后,至此打包工作完成。

5. 解析數(shù)據(jù)包過(guò)程

8cdfe29e-6be9-11ed-8abf-dac502259ad0.png

同樣,在服務(wù)器將信息發(fā)送給客戶端后,需要根據(jù)協(xié)議的格式對(duì)數(shù)據(jù)包進(jìn)行適當(dāng)?shù)姆治?。因此,此時(shí)調(diào)用cJSON_Parse()函數(shù)來(lái)解析來(lái)自服務(wù)器的JSON數(shù)據(jù)包,此外,還需要?jiǎng)?chuàng)建cJSON的對(duì)象來(lái)接收解析后的數(shù)據(jù),最后,使用JSON_GetObjectItem()的函數(shù)來(lái)獲取cJSON對(duì)象的不同屬性值,這樣就完成了數(shù)據(jù)包的解包工作。需要注意的是,在處理數(shù)據(jù)后,必須調(diào)用cJSON_Delete()函數(shù)來(lái)釋放創(chuàng)建的對(duì)象。否則會(huì)導(dǎo)致內(nèi)存泄漏,并導(dǎo)致系統(tǒng)不穩(wěn)定。

6.代碼庫(kù)位置

大家是不是躍躍欲試,想看代碼?

如果希望尋找OpenHarmony引用的第三方開(kāi)源庫(kù),只需要在Gitee上全局搜索OpenHarmony third party+相關(guān)領(lǐng)域關(guān)鍵術(shù)語(yǔ)。

OpenHarmony跟JSON相關(guān)的庫(kù),就是全局搜索OpenHarmony third party json字段。

8d0f92be-6be9-11ed-8abf-dac502259ad0.png

<本文完>

寫在最后

OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”(以下簡(jiǎn)稱“啃論文俱樂(lè)部”)是在 2022年 1 月 11 日的一次日?;顒?dòng)中誕生的。截至 3 月 31 日,啃論文俱樂(lè)部已有 87 名師生和企業(yè)導(dǎo)師參與,目前共有十二個(gè)技術(shù)方向并行探索,每個(gè)方向都有專業(yè)的技術(shù)老師帶領(lǐng)同學(xué)們通過(guò)啃綜述論文制定技術(shù)地圖,按“降龍十八掌”的學(xué)習(xí)方法編排技術(shù)開(kāi)發(fā)內(nèi)容,并通過(guò)專業(yè)推廣培養(yǎng)高校開(kāi)發(fā)者成為軟件技術(shù)學(xué)術(shù)級(jí)人才。

啃論文俱樂(lè)部的宗旨是希望同學(xué)們?cè)陂_(kāi)源活動(dòng)中得到軟件技術(shù)能力提升、得到技術(shù)寫作能力提升、得到講解技術(shù)能力提升。大學(xué)一年級(jí)新生〇門檻參與,已有俱樂(lè)部來(lái)自多所高校的大一同學(xué)寫出高居榜首的技術(shù)文章。

如今,搜索“啃論文”,人們不禁想到、而且看到的都是我們——OpenHarmony 成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”的產(chǎn)出。

8d3978ae-6be9-11ed-8abf-dac502259ad0.jpg

8d57df38-6be9-11ed-8abf-dac502259ad0.jpg

8d6c39ec-6be9-11ed-8abf-dac502259ad0.jpg

OpenHarmony開(kāi)源與開(kāi)發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”學(xué)習(xí)資料合集

1)入門資料:啃論文可以有怎樣的體驗(yàn)

https://docs.qq.com/slide/DY0RXWElBTVlHaXhi?u=4e311e072cbf4f93968e09c44294987d

2)操作辦法:怎么從啃論文到開(kāi)源提交以及深度技術(shù)文章輸出https://docs.qq.com/slide/DY05kbGtsYVFmcUhU

3)企業(yè)/學(xué)校/老師/學(xué)生為什么要參與 & 啃論文俱樂(lè)部的運(yùn)營(yíng)辦法https://docs.qq.com/slide/DY2JkS2ZEb2FWckhq

4)往期啃論文俱樂(lè)部同學(xué)分享會(huì)精彩回顧:

同學(xué)分享會(huì)No1.成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/02/18)https://docs.qq.com/doc/DY2RZZmVNU2hTQlFY

同學(xué)分享會(huì)No.2 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/11)https://docs.qq.com/doc/DUkJ5c2NRd2FRZkhF

同學(xué)們分享會(huì)No.3 成長(zhǎng)計(jì)劃啃論文分享會(huì)紀(jì)要(2022/03/25)

https://docs.qq.com/doc/DUm5pUEF3ck1VcG92?u=4e311e072cbf4f93968e09c44294987d

現(xiàn)在,你是不是也熱血沸騰,摩拳擦掌地準(zhǔn)備加入這個(gè)俱樂(lè)部呢?當(dāng)然歡迎啦!啃論文俱樂(lè)部向任何對(duì)開(kāi)源技術(shù)感興趣的大學(xué)生開(kāi)發(fā)者敞開(kāi)大門。

8dc3045c-6be9-11ed-8abf-dac502259ad0.png

掃碼添加 OpenHarmony 高校小助手,加入“啃論文俱樂(lè)部”微信群

后續(xù),我們會(huì)在服務(wù)中心公眾號(hào)陸續(xù)分享一些 OpenHarmony 開(kāi)源與開(kāi)發(fā)者成長(zhǎng)計(jì)劃—“啃論文俱樂(lè)部”學(xué)習(xí)心得體會(huì)和總結(jié)資料。記得呼朋引伴來(lái)看哦。

8dd82044-6be9-11ed-8abf-dac502259ad0.gif

8ded88e4-6be9-11ed-8abf-dac502259ad0.png

8e3e68b8-6be9-11ed-8abf-dac502259ad0.png

8e55b004-6be9-11ed-8abf-dac502259ad0.png

8eb28310-6be9-11ed-8abf-dac502259ad0.png

8ee38e92-6be9-11ed-8abf-dac502259ad0.png

8efaa4e2-6be9-11ed-8abf-dac502259ad0.png

8f202b90-6be9-11ed-8abf-dac502259ad0.png

8f3e134e-6be9-11ed-8abf-dac502259ad0.png

8f57c60e-6be9-11ed-8abf-dac502259ad0.png

8f6a5f26-6be9-11ed-8abf-dac502259ad0.png

8f7e1d18-6be9-11ed-8abf-dac502259ad0.png

8f953bec-6be9-11ed-8abf-dac502259ad0.png

8fb1cd98-6be9-11ed-8abf-dac502259ad0.png

8fd91eb6-6be9-11ed-8abf-dac502259ad0.png

8fea573a-6be9-11ed-8abf-dac502259ad0.png

90040a5e-6be9-11ed-8abf-dac502259ad0.png

902f9cd2-6be9-11ed-8abf-dac502259ad0.png

90424ae4-6be9-11ed-8abf-dac502259ad0.png

908e0560-6be9-11ed-8abf-dac502259ad0.png

90a8bc84-6be9-11ed-8abf-dac502259ad0.png

90cf6190-6be9-11ed-8abf-dac502259ad0.png

9134e68c-6be9-11ed-8abf-dac502259ad0.png

917223da-6be9-11ed-8abf-dac502259ad0.png

919bc7f8-6be9-11ed-8abf-dac502259ad0.png

91cab5d6-6be9-11ed-8abf-dac502259ad0.png

91e06192-6be9-11ed-8abf-dac502259ad0.png

925083e6-6be9-11ed-8abf-dac502259ad0.png


原文標(biāo)題:cJSON在傳統(tǒng)C/S模型的應(yīng)用

文章出處:【微信公眾號(hào):開(kāi)源技術(shù)服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 開(kāi)源技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    389

    瀏覽量

    8768
  • OpenHarmony
    +關(guān)注

    關(guān)注

    33

    文章

    3977

    瀏覽量

    21373

原文標(biāo)題:cJSON在傳統(tǒng)C/S模型的應(yīng)用

文章出處:【微信號(hào):開(kāi)源技術(shù)服務(wù)中心,微信公眾號(hào):共熵服務(wù)中心】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    LCD 屏幕上的文本區(qū)域和 ddlist 更新時(shí)閃爍是為什么?

    我正在嘗試我的 LCD 處理程序中更新 LCD 屏幕下方的幾個(gè)文本區(qū)域。 val = cJSON_GetObjectItem(root, \"
    發(fā)表于 04-13 08:23

    S32K344如何配置 MCAL 和應(yīng)用層模型?

    我想使用 S32DS 配置工具 simulink(MBD) 開(kāi)發(fā) CAN Receive 項(xiàng)目S32K344。我 MBDT 中嘗試了這個(gè)例子,但經(jīng)過(guò)編程,它并沒(méi)有實(shí)現(xiàn)我想要的功能。您能否建議我應(yīng)該如何配置 MCAL 和應(yīng)用層
    發(fā)表于 04-01 06:38

    摩爾線程MTT S5000全面適配Qwen3.5三款新模型

    第一時(shí)間做出極速響應(yīng),宣布已在旗艦級(jí)AI訓(xùn)推一體全功能GPU MTT S5000上,完成對(duì)這三款全新模型的全方位適配。 ? 此次高效支持充分展示了摩爾線程MUSA生態(tài)的成熟度與完備性。本次Qwen3.5
    的頭像 發(fā)表于 02-26 16:23 ?815次閱讀

    沐曦曦云C500/C550 GPU產(chǎn)品深度適配MiniMax M2.5模型

    2月13日晚間,MiniMax正式開(kāi)源MiniMax M2.5模型。沐曦技術(shù)團(tuán)隊(duì)依托MXMACA軟件棧,24小時(shí)內(nèi)完成曦云C500/C550 對(duì)該
    的頭像 發(fā)表于 02-26 14:19 ?1178次閱讀

    【ESP32-C3系列】WT32C3-S1/S2模組規(guī)格書

    概述WT32C3-S1和WT32C3-S2是通用型Wi-Fi和低功耗藍(lán)牙(BluetoothLE)模組,是一款低功耗高性價(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇自動(dòng)化、安防、智能家居、遠(yuǎn)程
    的頭像 發(fā)表于 02-03 18:15 ?698次閱讀
    【ESP32-<b class='flag-5'>C</b>3系列】WT32<b class='flag-5'>C3-S</b>1/<b class='flag-5'>S</b>2模組規(guī)格書

    cJSON庫(kù)是什么?

    cJSON庫(kù)是什么?cJSON是一個(gè)輕量級(jí)的json解析庫(kù)。使用起來(lái)非常簡(jiǎn)單,整個(gè)庫(kù)非常地簡(jiǎn)潔,核心功能的實(shí)現(xiàn)都在cJSON.c文件,非常適合閱讀源代碼來(lái)學(xué)習(xí)C語(yǔ)言。最近讀完這個(gè)庫(kù)的源
    發(fā)表于 01-29 07:13

    【ESP32-C3系列】WT32C3-S1/S2模組產(chǎn)品介紹

    ??點(diǎn)擊上方名片關(guān)注了解更多概述WT32C3-S1和WT32C3-S2是通用型Wi-Fi和低功耗藍(lán)牙(BluetoothLE)模組,是一款低功耗高性價(jià)比的嵌入式無(wú)線網(wǎng)絡(luò)控制模塊??蓾M足智能電網(wǎng)、樓宇
    的頭像 發(fā)表于 01-26 18:15 ?636次閱讀
    【ESP32-<b class='flag-5'>C</b>3系列】WT32<b class='flag-5'>C3-S</b>1/<b class='flag-5'>S</b>2模組產(chǎn)品介紹

    以下嵌入式軟件設(shè)計(jì)模型中,屬于數(shù)據(jù)流模型的是,哪里有設(shè)計(jì)模型的介紹?

    以下嵌入式軟件設(shè)計(jì)模型中,屬于數(shù)據(jù)流模型的是()。A. CCSB. CSPC. FSMD. Petri Net
    發(fā)表于 11-24 15:55

    谷歌與耶魯大學(xué)合作發(fā)布最新C2S-Scale 27B模型

    我們很榮幸發(fā)布與耶魯大學(xué)合作研究的 Cell2Sentence-Scale 27B (C2S-Scale),這是一個(gè)新的 270 億參數(shù)基礎(chǔ)模型,旨在理解單個(gè)細(xì)胞的 "語(yǔ)言"。C2S-Scale 建立
    的頭像 發(fā)表于 11-06 10:35 ?1074次閱讀

    如何在vivadoHLS中使用.TLite模型

    本帖欲分享如何在vivadoHLS中使用.TLite模型。Vivado HLS中導(dǎo)入模型后,需要設(shè)置其輸入和輸出接口以與您的設(shè)計(jì)進(jìn)行適配。 1. Vivado HLS項(xiàng)目中導(dǎo)入
    發(fā)表于 10-22 06:29

    cJSON_Parse返回為空,有長(zhǎng)度限制是什么原因?

    // 解析JSON cJSON *root = cJSON_Parse(json_str); if (!root) { const char *error_ptr
    發(fā)表于 09-11 06:28

    【NCS隨筆】NCS使用CJSON庫(kù)

    【NCS隨筆】NCS使用CJSON庫(kù) 這個(gè)文章講一下NCS上面如何使用JSON庫(kù),我使用Hello_world例程添加庫(kù) 宏的配置 CONFIG_LOG =y
    的頭像 發(fā)表于 08-13 15:12 ?760次閱讀
    【NCS隨筆】NCS使用<b class='flag-5'>CJSON</b>庫(kù)

    請(qǐng)問(wèn)如何在C++中使用NPU上的模型緩存?

    無(wú)法確定如何在 C++ 中的 NPU 上使用模型緩存
    發(fā)表于 06-24 07:25

    ON Semiconductor RB521S30T1G參數(shù)特性與EDA模型 數(shù)據(jù)手冊(cè)介紹

    ON Semiconductor RB521S30T1G參數(shù)特性與EDA模型 數(shù)據(jù)手冊(cè)介紹
    的頭像 發(fā)表于 05-28 16:45 ?1.6w次閱讀
    ON Semiconductor RB521<b class='flag-5'>S</b>30T1G參數(shù)特性與EDA<b class='flag-5'>模型</b> 數(shù)據(jù)手冊(cè)介紹

    施耐德電氣Altivar 1200C-S中壓變頻器化工與儲(chǔ)能領(lǐng)域的應(yīng)用

    施耐德電氣全新一代Altivar 1200C-S中壓變頻器(以下簡(jiǎn)稱ATV1200C-S中壓變頻器)延續(xù)石化、礦業(yè)、冶金、市政行業(yè)中"變"出新高度的勢(shì)頭,化工與儲(chǔ)能兩大領(lǐng)域也持續(xù)發(fā)
    的頭像 發(fā)表于 05-27 10:29 ?1706次閱讀