【面對的問題】
在物聯(lián)網產品的開發(fā)過程中,對JSON格式的數據處理是一個強需求,例如亞馬遜的 AWS IOT平臺,設備與后臺之間的通訊數據都是JSON格式,先瞄一眼大概的樣子:

這是一個真實產品的通訊數據,設備端的代碼C代碼中利用cJSON這個開源工具來完成JSON字符的解析和組裝工作。代碼我這里就不貼了,解析函數很長,要滾動好多次鼠標滑輪。而且一不注意釋放資源就會發(fā)生內存泄漏!
那么,是否有更好的方式來解決這個問題呢?
答案就是這篇文章介紹的duktape引擎!
【Duktape簡介】
這里只是簡單介紹下duktape,詳細的介紹大家自己去google。
Duktape 是一個嵌入式 Javascript引擎,專注于可移植性和空間占用。
易于集成到C/C++項目中,使用API實現C代碼與JS代碼的雙向調用。
【代碼說明】
1.文件說明

duktape.c:引擎主要C文件。
duktape.h:引擎頭文件。
main.c : main函數所在文件。
main.js :Javascript文件,處理業(yè)務邏輯的代碼就放在這里。
Makefile : 編譯腳本。
miniz.c :有時候為了js代碼的保密,不能把js源碼放到最終產品中,需要壓縮和混淆;加載的時候再進行解壓。
2.核心步驟

*當C代碼中需要對JSON格式的字符串進行處理時,把JSON數據通過棧結構傳給JS程序,在JS程序中處理數據之后,把處理結果再返回給C程序中。
- 在JS程序中,如果有些操作無法處理(例如:發(fā)送數據給串口),那么就調用C程序中的函數來處理。*
3.代碼說明





【測試環(huán)境】
- x86系統(tǒng)
我是在 Ubuntu16.04 下測試的,使用系統(tǒng)自帶 gcc 編譯器。
只需要把編譯器換成對應的交叉編譯器即可。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
物聯(lián)網
+關注
關注
2945文章
47818瀏覽量
414812 -
IOT
+關注
關注
190文章
4395瀏覽量
208515 -
JSON
+關注
關注
0文章
128瀏覽量
7780
發(fā)布評論請先 登錄
相關推薦
熱點推薦
android使用JSON進行網絡數據交換
本文將快速講解 JSON 格式,并通過代碼示例演示如何分別在客戶端和服務器端進行 JSON 格式數據的處理。
什么是JSON
發(fā)表于 12-04 11:51
?0次下載
數據庫中如何使用不同數據表結構定義方式來處理連接運算
在供暖收費系統(tǒng)的關系數據庫中 當兩個表連接運算的要求為元素和集合之間運算時 可以利用集合的冪運算進行簡化處理 討論了幾種不同數據表結構定義方式來處理
發(fā)表于 10-30 17:19
?2次下載
如何使用Web3Js來處理區(qū)塊鏈斷開或重新啟動
如果您的團隊在生產中使用Web3Js,那么您必須意識到在Web3Js中沒有內置的重新連接功能來處理區(qū)塊鏈斷開或重新啟動。因此,通常情況下,當連接下降時,需要重新啟動NodeJS服務以便再次連接到區(qū)塊鏈。這不是一個很實用的方法。
發(fā)表于 03-03 09:25
?2701次閱讀
在Python中高效使用JSON的四種方法
字典和列表是 Python的兩種數據類型,也是用來處理JSON的完美工具。本文將主要分享以下內容:如何載入、編寫JSON?如何在命令行上優(yōu)化、校驗J
Danfo.js提供高性能、直觀易用的數據結構,支持結構化數據的操作和處理
Danfo.js 是個 JavaScript 開源庫,提供了高性能、直觀易用的數據結構,支持結構化數據的操作和處理。Danfo.
什么是JSON JSON的語法規(guī)則
JSON數據交換格式 JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基于
如何利用Dataloder來處理加載數據集
在Pytorch中,torch.utils.data中的Dataset與DataLoader是處理數據集的兩個函數,用來處理加載數據集。通常情況下,使用的關鍵在于構建dataset類。
結構化數據:ProtoBuf試用與JSON的比較
XML、JSON 也可以用來存儲此類結構化數據,但是使用ProtoBuf表示的數據能更加高效,并且將數據壓縮得更小。
發(fā)表于 03-08 15:43
?3369次閱讀
怎么用js保存數據
JS保存數據是Web開發(fā)中非常重要的一個功能,它能夠將用戶的輸入或者其他數據存儲在瀏覽器中,隨后方便地讀取和使用。在本文中,我們將討論不同的數據保存方式以及如何使用
JSON協(xié)議是什么,物聯(lián)網中的RTU中如何使用JSON協(xié)議和服務器交互
語言。 JSON 是一種輕量級的數據交換格式,它基于 ECMAScript (w3c制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示
怎么用C+JS結構來處理JSON數據?
評論