女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

JSON格式以及cJSON的使用及注意事項

STM32單片機(jī) ? 來源:未知 ? 作者:李倩 ? 2018-10-16 08:57 ? 次閱讀

前言

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

JSON格式

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

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

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

cJSON的使用

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

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

01將cJSON添加到工程

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

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

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

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

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

*valuestring, valueint, valuedouble和*string指針分別指向該JSON數(shù)據(jù)類型具體的值,視其類型而定。

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

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

見下面的代碼:

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

    關(guān)注

    2289

    文章

    11011

    瀏覽量

    362302
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    121

    瀏覽量

    7260

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

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

收藏 人收藏

    評論

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

    美國Odyssey奧德賽電池充電注意事項全解析

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

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

    的數(shù)據(jù)。 CJSON是一個輕量級的JSON解析庫,廣泛應(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ù)有哪些注意事項

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

    智多晶DDR Controller使用注意事項

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

    多層板埋孔設(shè)計注意事項

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

    PCBA生產(chǎn)注意事項

    ? ?PCBA生產(chǎn)注意事項。 長按識別二維碼關(guān)注[現(xiàn)代電子裝聯(lián)工藝技術(shù)]訂閱號,開啟我們共同的學(xué)習(xí)之旅 end
    的頭像 發(fā)表于 11-15 17:04 ?768次閱讀
    PCBA生產(chǎn)<b class='flag-5'>注意事項</b>

    TPA3140D2 EMC設(shè)計注意事項

    電子發(fā)燒友網(wǎng)站提供《TPA3140D2 EMC設(shè)計注意事項.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 11:02 ?0次下載
    TPA3140D2 EMC設(shè)計<b class='flag-5'>注意事項</b>

    如何為住宅配置靜態(tài)IP:步驟與注意事項

    為住宅配置靜態(tài)IP地址,通常涉及以下步驟和注意事項
    的頭像 發(fā)表于 10-24 08:02 ?827次閱讀

    TMS320DM644x熱注意事項

    電子發(fā)燒友網(wǎng)站提供《TMS320DM644x熱注意事項.pdf》資料免費(fèi)下載
    發(fā)表于 10-16 11:35 ?0次下載
    TMS320DM644x熱<b class='flag-5'>注意事項</b>

    脈沖式充電器的使用注意事項

    脈沖式充電器的使用注意事項主要包括以下幾個方面: 一、安全注意事項 用電安全 :在充電過程中,應(yīng)始終保持警惕,注意用電安全,避免觸電和短路等危險情況的發(fā)生。 防火防災(zāi) :避免在易燃易爆物品附近進(jìn)行
    的頭像 發(fā)表于 09-26 16:05 ?2205次閱讀

    智能高端開關(guān)的故障和正常診斷注意事項

    電子發(fā)燒友網(wǎng)站提供《智能高端開關(guān)的故障和正常診斷注意事項.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 10:45 ?0次下載
    智能高端開關(guān)的故障和正常診斷<b class='flag-5'>注意事項</b>

    繞線電感定制的注意事項

    電子發(fā)燒友網(wǎng)站提供《繞線電感定制的注意事項.docx》資料免費(fèi)下載
    發(fā)表于 09-20 11:24 ?4次下載

    共模電感定制的注意事項

    電子發(fā)燒友網(wǎng)站提供《共模電感定制的注意事項.docx》資料免費(fèi)下載
    發(fā)表于 09-04 11:47 ?0次下載

    LiFePO4設(shè)計注意事項

    電子發(fā)燒友網(wǎng)站提供《LiFePO4設(shè)計注意事項.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 09:24 ?0次下載
    LiFePO4設(shè)計<b class='flag-5'>注意事項</b>

    現(xiàn)場總線的使用方法與注意事項

    的穩(wěn)定可靠運(yùn)行,正確的使用方法和注意事項至關(guān)重要。本文將詳細(xì)介紹現(xiàn)場總線的使用方法和注意事項,以供讀者參考。
    的頭像 發(fā)表于 06-06 11:49 ?1189次閱讀