色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

前言

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

JSON格式

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

JSON格式的數據看起來就像下面這個樣子:

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

cJSON的使用

針對不同的開發語言,網上有很多JSON的實現, demo里使用的是cJSON,版本1.6。它的源碼可以在

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

01將cJSON添加到工程

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

02數據結構

cJSON中使用下面的數據結構來表示JSON數據

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

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

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

03使用cJSON生成JSON數據

下面我們看看如何使用cJSON來生成下面的數據:

見下面的代碼:

現在就已經在cJSON中,構件好了和前面的數據對應的數據結構。但現在這個數據結構還不能發送出去,需要調用cJSON_Print將其打印成串行的數據,存放在buffer中,以便后面進行發送。

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

通過cJSON_CreateObject創建的對象,也需要調用cJSON_Delete來進行刪除并釋放占用的內存。否則也會出現內存泄漏。見下面的代碼:

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

04使用cJSON解析JSON數據

可以通過cJSON_Parse()函數來解析接收到的JSON數據,cJSON_Parse()函數會對數據進行解析,并申請一段內存保存解析后的cJSON的數據結構,并返回指針。

通過cJSON_GetObjectItem()函數可以獲取解析后的cJSON數據結構中的第一級子對象。

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

下面代碼是對收到的JSON數據的解析過程。收到的數據內容為:

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356518
  • JSON
    +關注

    關注

    0

    文章

    119

    瀏覽量

    6980

原文標題:STM32 FOTA例程之cJSON:就問你會不會使用!

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    多層板埋孔設計注意事項

    多層板埋孔設計注意事項
    的頭像 發表于 12-20 16:06 ?168次閱讀

    PCBA生產注意事項

    ? ?PCBA生產注意事項。 長按識別二維碼關注[現代電子裝聯工藝技術]訂閱號,開啟我們共同的學習之旅 end
    的頭像 發表于 11-15 17:04 ?415次閱讀
    PCBA生產<b class='flag-5'>注意事項</b>

    如何為住宅配置靜態IP:步驟與注意事項

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

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

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

    繞線電感定制的注意事項

    電子發燒友網站提供《繞線電感定制的注意事項.docx》資料免費下載
    發表于 09-20 11:24 ?0次下載

    共模電感定制的注意事項

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

    LiFePO4設計注意事項

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

    現場總線的使用方法與注意事項

    的穩定可靠運行,正確的使用方法和注意事項至關重要。本文將詳細介紹現場總線的使用方法和注意事項,以供讀者參考。
    的頭像 發表于 06-06 11:49 ?818次閱讀

    FMD LINK 使用注意事項

    電子發燒友網站提供《FMD LINK 使用注意事項.pdf》資料免費下載
    發表于 05-06 10:11 ?0次下載

    家用路由器的使用技巧和注意事項**

    家用路由器使用技巧包括合理放置、定期重啟、設置強密碼、設置訪客網絡、更新固件、啟用雙頻網絡和設置家長控制。注意事項包括避免過度擁擠、防止過度疲勞、防止遮擋信號、定期檢查網絡設備、保護隱私信息、避免惡意攻擊和避免強度過高的信號。遵循這些技巧和注意事項,可以提高家庭網絡的連接
    的頭像 發表于 03-21 17:37 ?825次閱讀

    光模塊使用可能遇到的問題以及注意事項

    光模塊使用中常見問題及注意事項:兼容性問題、溫度問題、插拔操作問題、故障診斷問題。
    的頭像 發表于 03-11 15:32 ?930次閱讀

    EMI / Safety觀念簡介及注意事項

    電子發燒友網站提供《EMI / Safety觀念簡介及注意事項.ppt》資料免費下載
    發表于 02-28 09:45 ?1次下載

    鋰電池充電方法的介紹以及注意事項

    的充電方法以及注意事項。 一、鋰電池的充電方法 1.使用原廠充電器:為了避免電流過大或者電壓不穩定對鋰電池造成損害,建議使用原廠充電器進行充電。原廠充電器經過嚴格的測試和認證,能夠提供穩定的電壓和合適的電流,有助
    的頭像 發表于 01-22 17:42 ?1.1w次閱讀

    浪涌抑制器的應用及注意事項

    浪涌抑制器的應用及注意事項?|深圳比創達電子
    的頭像 發表于 01-19 09:55 ?764次閱讀
    浪涌抑制器的應用及<b class='flag-5'>注意事項</b>?

    測速電機: 常見6大注意事項

    測速電機: 常見6大注意事項!測速電機是一種用于測量物體運動速度的設備,廣泛應用于工業生產和科學研究中。測速電機常見的6大注意事項以確保安全和準確性。
    的頭像 發表于 01-11 10:53 ?505次閱讀
    測速電機: 常見6大<b class='flag-5'>注意事項</b>
    主站蜘蛛池模板: 一品道门在线视频| 亚洲欧美日韩综合影院| 亚洲1卡二卡3卡4卡新区在线| 99精品热视频30在线热视频| 亚洲黄视频在线观看| 国产叼嘿久久精品久久| 久 久 亚洲 少 妇 无 码| 男人插曲女人身体视频| 伊人22222| 精品久久久噜噜噜久久久app| 欧美AAAAAA级午夜福利视频| 肉动漫3D卡通无修在线播放| 波多久久亚洲精品AV无码| 欧美精品AV无码一区二区| AV无码久久无遮挡国产麻豆| 精品麻豆一卡2卡三卡4卡乱码| 亚洲区视频| 久久精品影院永久网址| 熟女理发厅| 国产色精品VR一区二区| 亚洲美女视频高清在线看| 扒开双腿疯进出爽爽爽动态图| 欧美整片华人play| 中文字幕免费在线视频| 免费夜里18款禁用软粉色| 99国产精品免费视频| 精品久久久久久无码人妻国产馆| 亚洲手机在线人成视频| 久久久久影视| asian极品呦女xx农村| 日本无码专区亚洲麻豆| 国产亚洲AV精品无码麻豆 | 99爱在线精品视频免费观看9| 欧洲兽交另类AVXXX| 国产精品久久久久久久久99热| 亚洲高清在线视频| 久久亚洲人成国产精品| 成人天堂资源WWW在线| 亚洲国产成人精品无码区APP| 久就热视频精品免费99| 超碰97超碰在线视频哦|