国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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
    +關注

    關注

    2309

    文章

    11162

    瀏覽量

    373406
  • JSON
    +關注

    關注

    0

    文章

    128

    瀏覽量

    7780

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    cJSON庫是什么?

    的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數據交換語言。 cJSON
    發表于 01-29 07:13

    請問CW32F030的硬件注意事項有哪些?

    CW32F030的硬件注意事項有哪些
    發表于 12-25 08:20

    請問IAP功能升級流程中有哪些注意事項

    IAP 功能升級流程中有哪些注意事項
    發表于 12-23 07:55

    迅為RK3588開發板Android系統燒寫及注意事項

    迅為RK3588開發板Android系統燒寫及注意事項
    的頭像 發表于 12-03 15:17 ?7162次閱讀
    迅為RK3588開發板Android系統燒寫及<b class='flag-5'>注意事項</b>

    驅動板PCB布線的注意事項

    PCB Layout 注意事項 1)布局注意事項: ●● 整體布局遵循功率回路與小信號控制回路分開布局原則,功率部分和控制部分的 GND 分開回流到輸入 GND。 ●● 芯片的放置方向優先考慮驅動
    發表于 12-02 07:40

    CW32F030在使用中的注意事項有哪些?

    CW32F030在使用中的注意事項有哪些?
    發表于 11-18 06:20

    RT1180 XMCD的特點和使用注意事項

    之前在 “XMCD – i.MX RT11xx系列簡單易用的特定外設配置功能”的文章給大家介紹了XMCD功能的基礎知識和用法,不過前面是以RT1170為例介紹的,本文將基于RT1180著重介紹XMCD的特點以及使用時的注意事項
    的頭像 發表于 10-07 11:06 ?1406次閱讀
    RT1180 XMCD的特點和使用<b class='flag-5'>注意事項</b>

    emWin AppWizard 開發注意事項有哪些?

    emWin AppWizard 開發注意事項
    發表于 09-04 06:18

    【NCS隨筆】NCS使用CJSON

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

    別讓這些細節毀了PCBA!焊接注意事項清單

    一站式PCBA加工廠家今天為大家講講PCBA加工中電子元器件焊接注意事項有哪些?PCBA加工中電子元器件焊接注意事項。 電子元器件焊接關鍵注意事項 在PCBA加工中,焊接工藝直接影響電路板的可靠性
    的頭像 發表于 07-23 09:26 ?1200次閱讀

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

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

    IGBT器件的防靜電注意事項

    IGBT作為功率半導體器件,對靜電極為敏感。我將從其靜電敏感性原理入手,詳細闡述使用過程中防靜電的具體注意事項與防護措施,確保其安全穩定運行。
    的頭像 發表于 05-15 14:55 ?1815次閱讀

    設置射頻網絡分析儀的測試條件有哪些注意事項

    射頻網絡分析儀(VNA)的測試條件設置直接影響測量結果的準確性和可靠性。以下從儀器配置、被測器件(DUT)特性、環境干擾、校準與驗證四個維度,系統梳理關鍵注意事項及解決方案。一、儀器配置與參數設置
    發表于 05-06 16:02

    掃描電鏡的日常維護有哪些注意事項

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

    依托raksmart服務器在多種系統上本地部署deepseek注意事項

    在RAKsmart服務器上本地部署DeepSeek時,需根據不同的操作系統和環境做好全面適配。以下是關鍵注意事項及分步指南,主機推薦小編為您整理發布依托raksmart服務器在多種系統上本地部署deepseek注意事項
    的頭像 發表于 03-19 11:25 ?892次閱讀