【面對的問題】
在物聯網產品的開發過程中,對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物聯網小鎮