拿來即用:用C+JS結構來處理JSON資料

sewain發表於2020-06-23

【面對的問題】

        在物聯網產品的開發過程中,對JSON格式的資料處理是一個強需求,例如亞馬遜的 AWS IOT平臺,裝置與後臺之間的通訊資料都是JSON格式,先瞄一眼大概的樣子:

     這是一個真實產品的通訊資料,裝置端的程式碼C程式碼中利用cJSON這個開源工具來完成JSON字元的解析和組裝工作。程式碼我這裡就不貼了,解析函式很長,要滾動好多次滑鼠滑輪。而且一不注意釋放資源就會發生記憶體洩漏!

    那麼,是否有更好的方式來解決這個問題呢?

    答案就是這篇文章介紹的duktape引擎!

【Duktape簡介】

    這裡只是簡單介紹下duktape,詳細的介紹大家自己去google。

    Duktape 是一個嵌入式 Javascript引擎,專注於可移植性和空間佔用。

    易於整合到C/C++專案中,使用API實現C程式碼與JS程式碼的雙向呼叫。

 

【程式碼說明】

1.檔案說明

 

 

    duktape.c:引擎主要C檔案。

    duktape.h:引擎標頭檔案。

    main.c      :  main函式所在檔案。

   main.js      :Javascript檔案,處理業務邏輯的程式碼就放在這裡。

    Makefile   :  編譯指令碼。

    miniz.c     :有時候為了js程式碼的保密,不能把js原始碼放到最終產品中,需要壓縮和混淆;載入的時候再進行解壓。

2.核心步驟 

 

    當C程式碼中需要對JSON格式的字串進行處理時,把JSON資料通過棧結構傳給JS程式,在JS程式中處理資料之後,把處理結果再返回給C程式中。

    在JS程式中,如果有些操作無法處理(例如:傳送資料給串列埠),那麼就呼叫C程式中的函式來處理。

3.程式碼說明

 

 

【測試環境】

1. x86系統

    我是在  Ubuntu16.04 下測試的,使用系統自帶 gcc 編譯器。

2.嵌入式系統

    只需要把編譯器換成對應的交叉編譯器即可。

 

【END】

1.這是原創文章,請尊重版權。如需轉載,請保留全部內容並註明來源。如果方便的話,請聯絡我確認。

2.文章中如有錯誤,或者希望交流、探討相關內容,非常歡迎聯絡我。

3.郵箱:sewain@126.com

4.公眾號:IOT物聯網小鎮

相關文章