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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

1.關(guān)于作者

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

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

2. 前言

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

cJSON github 開源地址如下:https://github.com/DaveGamble/cJSON

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

我們來看看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:指向下一條/上一條鍵值對(key-value)節(jié)點(diǎn)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6.代碼庫位置

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

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

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

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

<本文完>

寫在最后

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

啃論文俱樂部的宗旨是希望同學(xué)們在開源活動中得到軟件技術(shù)能力提升、得到技術(shù)寫作能力提升、得到講解技術(shù)能力提升。大學(xué)一年級新生〇門檻參與,已有俱樂部來自多所高校的大一同學(xué)寫出高居榜首的技術(shù)文章。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

    關(guān)注

    0

    文章

    389

    瀏覽量

    8172
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3854

    瀏覽量

    18615

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    【RA-Eco-RA4M2開發(fā)板評測】RA4M2上移植使用cJSON

    大家先把它下載下來 我們只需要使用其中的兩個文件cJSON.ccJSON.h,其它的刪除 1。先把cJSON復(fù)制到串口工程目錄下,KEIL中添加路勁和文件。建立串口我之前寫了很多
    發(fā)表于 05-04 13:40

    ZED75-48S48C-H ZED75-48S48C-H

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)ZED75-48S48C-H相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有ZED75-48S48C-H的引腳圖、接線圖、封裝手冊、中文資料、英文資料,ZED75-48S48C-H真值表,
    發(fā)表于 03-21 18:53
    ZED75-48<b class='flag-5'>S48C</b>-H ZED75-48<b class='flag-5'>S48C</b>-H

    FW2-24S15C3 FW2-24S15C3

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)FW2-24S15C3相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有FW2-24S15C3的引腳圖、接線圖、封裝手冊、中文資料、英文資料,F(xiàn)W2-24S15C3真值表,F(xiàn)W2-24
    發(fā)表于 03-20 18:30
    FW2-24<b class='flag-5'>S15C</b>3 FW2-24<b class='flag-5'>S15C</b>3

    為什么無法S32K396-BGA-DC1評估板上運(yùn)行MBDT s32k3xx_dio_ebt示例?

    問題地安裝工具箱,但我無法運(yùn)行s32k3xx_dio_ebt示例。 我認(rèn)為我模型的參數(shù)中設(shè)置了正確的目標(biāo) 我正在使用安裝在電路板上的“Open SDA”調(diào)試器。跳線 J16、J17、J18
    發(fā)表于 03-20 07:16

    FW2-24S15C FW2-24S15C

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)FW2-24S15C相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有FW2-24S15C的引腳圖、接線圖、封裝手冊、中文資料、英文資料,F(xiàn)W2-24S15C真值表,F(xiàn)W2-24
    發(fā)表于 03-19 18:58
    FW2-24<b class='flag-5'>S15C</b> FW2-24<b class='flag-5'>S15C</b>

    CL5-220S05C CL5-220S05C

    電子發(fā)燒友網(wǎng)為你提供AIPULNION(AIPULNION)CL5-220S05C相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有CL5-220S05C的引腳圖、接線圖、封裝手冊、中文資料、英文資料,CL5-220S05C真值表,CL5-220
    發(fā)表于 03-18 18:40
    CL5-220<b class='flag-5'>S05C</b> CL5-220<b class='flag-5'>S05C</b>

    NVIDIA大語言模型推薦系統(tǒng)中的應(yīng)用實(shí)踐

    推薦系統(tǒng)的主要任務(wù)在于根據(jù)用戶的過往行為預(yù)測其潛在興趣點(diǎn),并據(jù)此推薦相應(yīng)的商品。傳統(tǒng)的推薦系統(tǒng)中,當(dāng)處理用戶請求時,會觸發(fā)多個召回模塊,例如熱門商品召回、個性化召回以及深度召回等,從而召回大量候選
    的頭像 發(fā)表于 03-05 09:30 ?806次閱讀
    NVIDIA大語言<b class='flag-5'>模型</b><b class='flag-5'>在</b>推薦系統(tǒng)中的應(yīng)用實(shí)踐

    為什么無法在運(yùn)行時C++推理中讀取OpenVINO?模型

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本 C++ 推理實(shí)現(xiàn) ( core.read_model()) 中讀取
    發(fā)表于 03-05 06:17

    Type-C母座的普及:傳統(tǒng)接口還能堅(jiān)持多久?

    Type-C母座作為一種新型的接口技術(shù),近年來逐漸取代了傳統(tǒng)接口,消費(fèi)電子、智能設(shè)備等領(lǐng)域取得了顯著的市場份額。那么,Type-C母座為
    的頭像 發(fā)表于 02-26 16:02 ?577次閱讀
    Type-<b class='flag-5'>C</b>母座的普及:<b class='flag-5'>傳統(tǒng)</b>接口還能堅(jiān)持多久?

    C#集成OpenVINO?:簡化AI模型部署

    開源測控、機(jī)器視覺、數(shù)采與分析三大領(lǐng)域中,如何快速將AI模型集成到應(yīng)用程序中, 實(shí)現(xiàn)AI賦能和應(yīng)用增值? 最容易的方式是:C#中,使用 OpenVINO工具套件 集成AI
    的頭像 發(fā)表于 02-17 10:03 ?1992次閱讀
    <b class='flag-5'>C</b>#集成OpenVINO?:簡化AI<b class='flag-5'>模型</b>部署

    C#中使用OpenVINO?:輕松集成AI模型!

    與分析三大領(lǐng)域中,如何快速將AI模型集成到應(yīng)用程序中,實(shí)現(xiàn)AI賦能和應(yīng)用增值?最容易的方式是:C#中,使用OpenVINO?工具套件集成AI模型。 一,什么是OpenVINO? 工具
    的頭像 發(fā)表于 02-07 14:05 ?850次閱讀
    <b class='flag-5'>C</b>#中使用OpenVINO?:輕松集成AI<b class='flag-5'>模型</b>!

    Type-C充電速度與傳統(tǒng)接口對比

    特性,迅速智能手機(jī)、筆記本電腦、平板電腦等設(shè)備上得到廣泛應(yīng)用。與傳統(tǒng)的USB接口相比,Type-C接口充電速度上具有明顯優(yōu)勢。 接口設(shè)計(jì) Type-
    的頭像 發(fā)表于 10-28 13:58 ?4241次閱讀

    AI大模型傳統(tǒng)機(jī)器學(xué)習(xí)的區(qū)別

    AI大模型傳統(tǒng)機(jī)器學(xué)習(xí)多個方面存在顯著的區(qū)別。以下是對這些區(qū)別的介紹: 一、模型規(guī)模與復(fù)雜度 AI大模型 :通常包含數(shù)十億甚至數(shù)萬億的參
    的頭像 發(fā)表于 10-23 15:01 ?2590次閱讀

    啟明智顯AI大模型解決方案加速傳統(tǒng)玩具智能升級,WIFI、4G便捷連網(wǎng)

    啟明智顯憑借前沿、低成本的AI大模型解決方案催化傳統(tǒng)玩具行業(yè)的革新,“高清顯示+AI大模型”將傳統(tǒng)玩具升級為集智能、情感、個性化于一體的智能玩伴。
    的頭像 發(fā)表于 08-21 10:07 ?1228次閱讀
    啟明智顯AI大<b class='flag-5'>模型</b>解決方案加速<b class='flag-5'>傳統(tǒng)</b>玩具智能升級,WIFI、4G便捷連網(wǎng)

    使用CJSON創(chuàng)建數(shù)字是一直是顯示0,為什么?

    使用CJSON創(chuàng)建字符沒有問題,但是創(chuàng)建數(shù)字是一直是顯示0,代碼如下: /* * Create a json format data */ root = cJSON
    發(fā)表于 07-22 07:02