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

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

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

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

JSON格式以及cJSON的使用及注意事項(xiàng)

STM32單片機(jī) ? 來(lái)源:未知 ? 作者:李倩 ? 2018-10-16 08:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

STM32 OTA例程中,設(shè)備端(STM32F769探索板)與云端交換數(shù)據(jù)使用的是JSON格式。在本篇文章中,將對(duì)JSON格式以及cJSON的使用及注意事項(xiàng)進(jìn)行說(shuō)明。

JSON格式

JSON(JavaScript Object Notation)是一個(gè)輕量級(jí)的數(shù)據(jù)交換格式。既便于開(kāi)發(fā)者讀寫(xiě),也便于機(jī)器分析和構(gòu)建。它獨(dú)立于開(kāi)發(fā)語(yǔ)言,是一種文本格式,很適用描述在各個(gè)系統(tǒng)間交換的數(shù)據(jù)。

JSON格式的數(shù)據(jù)看起來(lái)就像下面這個(gè)樣子:

這個(gè)JSON數(shù)據(jù)描述的是Room1的LED燈狀態(tài)以及溫度值。它由一組“名稱(chēng)(key)”以及對(duì)應(yīng)的“ 值(value)”組成?!懊Q(chēng)”和“ 值”之間由“ :”分開(kāi)。各組“名稱(chēng):值”對(duì)之間由“,”符號(hào)進(jìn)行分割。

cJSON的使用

針對(duì)不同的開(kāi)發(fā)語(yǔ)言,網(wǎng)上有很多JSON的實(shí)現(xiàn), demo里使用的是cJSON,版本1.6。它的源碼可以在

https://github.com/DaveGamble/cJSON上下載。

01將cJSON添加到工程

cJSON只有一個(gè)C文件cJSON.c和一個(gè)頭文件cJSON.h。所以只需要將這兩個(gè)文件拷貝到工程文件夾中,并將cJSON.c添加到工程中就可以了。

02數(shù)據(jù)結(jié)構(gòu)

cJSON中使用下面的數(shù)據(jù)結(jié)構(gòu)來(lái)表示JSON數(shù)據(jù)

*next和*prev 指針可以用來(lái)遍歷“矩陣”或者“對(duì)象”類(lèi)型的JSON數(shù)據(jù)鏈表;這兩種類(lèi)型的JSON數(shù)據(jù)還會(huì)有一個(gè)子數(shù)據(jù)指針*child

type : 表示該JSON數(shù)據(jù)的類(lèi)型,比如數(shù)字,字符串、矩陣、對(duì)象等

*valuestring, valueint, valuedouble和*string指針?lè)謩e指向該JSON數(shù)據(jù)類(lèi)型具體的值,視其類(lèi)型而定。

03使用cJSON生成JSON數(shù)據(jù)

下面我們看看如何使用cJSON來(lái)生成下面的數(shù)據(jù):

見(jiàn)下面的代碼:

現(xiàn)在就已經(jīng)在cJSON中,構(gòu)件好了和前面的數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)。但現(xiàn)在這個(gè)數(shù)據(jù)結(jié)構(gòu)還不能發(fā)送出去,需要調(diào)用cJSON_Print將其打印成串行的數(shù)據(jù),存放在buffer中,以便后面進(jìn)行發(fā)送。

cJSON_Print執(zhí)行的時(shí)候會(huì)向系統(tǒng)申請(qǐng)一段內(nèi)存來(lái)保存串行化了的數(shù)據(jù),并返回其指針。這里一定要注意的是,cJSON_Print中申請(qǐng)的內(nèi)存,一定要記得釋放(cJSON的代碼中不會(huì)自動(dòng)去做釋放動(dòng)作),否則就會(huì)出現(xiàn)內(nèi)存泄漏。

通過(guò)cJSON_CreateObject創(chuàng)建的對(duì)象,也需要調(diào)用cJSON_Delete來(lái)進(jìn)行刪除并釋放占用的內(nèi)存。否則也會(huì)出現(xiàn)內(nèi)存泄漏。見(jiàn)下面的代碼:

仔細(xì)的同學(xué)可能會(huì)發(fā)現(xiàn)為什么調(diào)用了兩次cJSON_CreateObject,但只看到釋放了其中的device_obj。這里也是需要注意的一個(gè)地方,從前面的代碼中,我們可以看到,reported_obj最終是作為子對(duì)象添加到了device_obj中,所以在刪除device_obj時(shí),cJSON_Delete會(huì)自動(dòng)刪除device_obj中所有的子對(duì)像,故而不需要再調(diào)用cJSON_Delete對(duì)reported_obj進(jìn)行刪除。

04使用cJSON解析JSON數(shù)據(jù)

可以通過(guò)cJSON_Parse()函數(shù)來(lái)解析接收到的JSON數(shù)據(jù),cJSON_Parse()函數(shù)會(huì)對(duì)數(shù)據(jù)進(jìn)行解析,并申請(qǐng)一段內(nèi)存保存解析后的cJSON的數(shù)據(jù)結(jié)構(gòu),并返回指針。

通過(guò)cJSON_GetObjectItem()函數(shù)可以獲取解析后的cJSON數(shù)據(jù)結(jié)構(gòu)中的第一級(jí)子對(duì)象。

使用cJSON_Parse()后,切記也一定要通過(guò)cJSON_Delete釋放之前所申請(qǐng)的內(nèi)存。

下面代碼是對(duì)收到的JSON數(shù)據(jù)的解析過(guò)程。收到的數(shù)據(jù)內(nèi)容為:

總結(jié)

cJSON代碼量不大,用起來(lái)也方便。使用的時(shí)候一定要注意前面提到對(duì)使用完的內(nèi)存空間進(jìn)行釋放。否則會(huì)造成內(nèi)存泄漏。

聲明:本文內(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)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2305

    文章

    11123

    瀏覽量

    371210
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    125

    瀏覽量

    7705

原文標(biāo)題:STM32 FOTA例程之cJSON:就問(wèn)你會(huì)不會(huì)使用!

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    迅為RK3588開(kāi)發(fā)板Android系統(tǒng)燒寫(xiě)及注意事項(xiàng)

    迅為RK3588開(kāi)發(fā)板Android系統(tǒng)燒寫(xiě)及注意事項(xiàng)
    的頭像 發(fā)表于 12-03 15:17 ?6259次閱讀
    迅為RK3588開(kāi)發(fā)板Android系統(tǒng)燒寫(xiě)及<b class='flag-5'>注意事項(xiàng)</b>

    驅(qū)動(dòng)板PCB布線的注意事項(xiàng)

    PCB Layout 注意事項(xiàng) 1)布局注意事項(xiàng): ●● 整體布局遵循功率回路與小信號(hào)控制回路分開(kāi)布局原則,功率部分和控制部分的 GND 分開(kāi)回流到輸入 GND。 ●● 芯片的放置方向優(yōu)先考慮驅(qū)動(dòng)
    發(fā)表于 12-02 07:40

    CW32F030在使用中的注意事項(xiàng)有哪些?

    CW32F030在使用中的注意事項(xiàng)有哪些?
    發(fā)表于 11-18 06:20

    emWin AppWizard 開(kāi)發(fā)注意事項(xiàng)有哪些?

    emWin AppWizard 開(kāi)發(fā)注意事項(xiàng)
    發(fā)表于 09-04 06:18

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

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

    美國(guó)Odyssey奧德賽電池充電注意事項(xiàng)全解析

    Odyssey奧德賽電池充電注意事項(xiàng)全解析 奧德賽電池作為高性能的深循環(huán)鉛酸電池,廣泛應(yīng)用于汽車(chē)啟動(dòng)、摩托車(chē)、船舶以及備用電源系統(tǒng)中。正確的充電方法不僅能夠延長(zhǎng)電池壽命,還能保障其性能穩(wěn)定發(fā)揮
    的頭像 發(fā)表于 05-19 16:31 ?906次閱讀
    美國(guó)Odyssey奧德賽電池充電<b class='flag-5'>注意事項(xiàng)</b>全解析

    IGBT器件的防靜電注意事項(xiàng)

    IGBT作為功率半導(dǎo)體器件,對(duì)靜電極為敏感。我將從其靜電敏感性原理入手,詳細(xì)闡述使用過(guò)程中防靜電的具體注意事項(xiàng)與防護(hù)措施,確保其安全穩(wěn)定運(yùn)行。
    的頭像 發(fā)表于 05-15 14:55 ?1245次閱讀

    【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】在RA4M2上移植使用cJSON

    的數(shù)據(jù)。 CJSON是一個(gè)輕量級(jí)的JSON解析庫(kù),廣泛應(yīng)用于嵌入式系統(tǒng)中。它支持JSON格式的數(shù)據(jù)解析和生成,能夠在資源受限的環(huán)境中高效運(yùn)行,是物聯(lián)網(wǎng)設(shè)備中處理數(shù)據(jù)的理想選擇。隨著物聯(lián)
    發(fā)表于 05-04 13:40

    掃描電鏡的日常維護(hù)有哪些注意事項(xiàng)?

    掃描電鏡日常維護(hù)的注意事項(xiàng)。
    的頭像 發(fā)表于 03-24 11:38 ?925次閱讀
    掃描電鏡的日常維護(hù)有哪些<b class='flag-5'>注意事項(xiàng)</b>?

    iW1710驅(qū)動(dòng)設(shè)計(jì)方案與PCB布線注意事項(xiàng)

    iW1710驅(qū)動(dòng)設(shè)計(jì)方案與PCB布線注意事項(xiàng)
    發(fā)表于 02-17 14:19 ?0次下載

    驅(qū)動(dòng)板設(shè)計(jì)注意事項(xiàng)

    設(shè)計(jì)驅(qū)動(dòng)板時(shí)我們需要考慮電路原理與元器件選擇、PCB設(shè)計(jì)、熱管理、電磁兼容性(EMC)、其他注意事項(xiàng)。以下是關(guān)于相關(guān)內(nèi)容的詳細(xì)介紹,讓我們一起來(lái)簡(jiǎn)單的了解一下吧!
    的頭像 發(fā)表于 02-12 13:48 ?1066次閱讀

    GD32單片機(jī)GPIO結(jié)構(gòu)及注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《GD32單片機(jī)GPIO結(jié)構(gòu)及注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 02-07 17:27 ?3次下載
    GD32單片機(jī)GPIO結(jié)構(gòu)及<b class='flag-5'>注意事項(xiàng)</b>

    智多晶DDR Controller使用注意事項(xiàng)

    最后一期我們主要介紹智多晶DDR Controller使用時(shí)的注意事項(xiàng)。
    的頭像 發(fā)表于 01-24 11:14 ?1364次閱讀
    智多晶DDR Controller使用<b class='flag-5'>注意事項(xiàng)</b>

    AN20-儀表低通濾波器的應(yīng)用注意事項(xiàng)

    電子發(fā)燒友網(wǎng)站提供《AN20-儀表低通濾波器的應(yīng)用注意事項(xiàng).pdf》資料免費(fèi)下載
    發(fā)表于 01-12 11:25 ?0次下載
    AN20-儀表低通濾波器的應(yīng)用<b class='flag-5'>注意事項(xiàng)</b>

    多層板埋孔設(shè)計(jì)注意事項(xiàng)

    多層板埋孔設(shè)計(jì)注意事項(xiàng)
    的頭像 發(fā)表于 12-20 16:06 ?1258次閱讀