chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎么用C+JS結(jié)構(gòu)來(lái)處理JSON數(shù)據(jù)?

汽車電子技術(shù) ? 來(lái)源:IOT物聯(lián)網(wǎng)小鎮(zhèn) ? 作者:船長(zhǎng)老四 ? 2023-02-14 13:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

【面對(duì)的問(wèn)題】

物聯(lián)網(wǎng)產(chǎn)品的開(kāi)發(fā)過(guò)程中,對(duì)JSON格式的數(shù)據(jù)處理是一個(gè)強(qiáng)需求,例如亞馬遜的 AWS IOT平臺(tái),設(shè)備與后臺(tái)之間的通訊數(shù)據(jù)都是JSON格式,先瞄一眼大概的樣子:

圖片

這是一個(gè)真實(shí)產(chǎn)品的通訊數(shù)據(jù),設(shè)備端的代碼C代碼中利用cJSON這個(gè)開(kāi)源工具來(lái)完成JSON字符的解析和組裝工作。代碼我這里就不貼了,解析函數(shù)很長(zhǎng),要滾動(dòng)好多次鼠標(biāo)滑輪。而且一不注意釋放資源就會(huì)發(fā)生內(nèi)存泄漏!



那么,是否有更好的方式來(lái)解決這個(gè)問(wèn)題呢?

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

【Duktape簡(jiǎn)介】

這里只是簡(jiǎn)單介紹下duktape,詳細(xì)的介紹大家自己去googleDuktape 是一個(gè)嵌入式 Javascript引擎,專注于可移植性和空間占用。

易于集成到C/C++項(xiàng)目中,使用API實(shí)現(xiàn)C代碼與JS代碼的雙向調(diào)用。

【代碼說(shuō)明】

1.文件說(shuō)明

圖片

duktape.c:引擎主要C文件。

duktape.h:引擎頭文件。

main.c      :  main函數(shù)所在文件。

main.js :Javascript文件,處理業(yè)務(wù)邏輯的代碼就放在這里。

Makefile   :  編譯腳本。

miniz.c     :有時(shí)候?yàn)榱薺s代碼的保密,不能把js源碼放到最終產(chǎn)品中,需要壓縮和混淆;加載的時(shí)候再進(jìn)行解壓。

2.核心步驟

圖片

*當(dāng)C代碼中需要對(duì)JSON格式的字符串進(jìn)行處理時(shí),把JSON數(shù)據(jù)通過(guò)棧結(jié)構(gòu)傳給JS程序,在JS程序中處理數(shù)據(jù)之后,把處理結(jié)果再返回給C程序中。
  • 在JS程序中,如果有些操作無(wú)法處理(例如:發(fā)送數(shù)據(jù)給串口),那么就調(diào)用C程序中的函數(shù)來(lái)處理。*

3.代碼說(shuō)明

圖片

圖片

圖片

圖片

圖片

【測(cè)試環(huán)境】

  1. x86系統(tǒng)
    我是在 Ubuntu16.04 下測(cè)試的,使用系統(tǒng)自帶 gcc 編譯器。

2.嵌入式系統(tǒng)

只需要把編譯器換成對(duì)應(yīng)的交叉編譯器即可。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2930

    文章

    46206

    瀏覽量

    392002
  • IOT
    IOT
    +關(guān)注

    關(guān)注

    187

    文章

    4303

    瀏覽量

    201711
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    JSON 數(shù)據(jù)格式

    )之間,記錄中實(shí)際的名稱 / 值對(duì)可以不一樣。JSON 是完全動(dòng)態(tài)的,允許在 JSON 結(jié)構(gòu)的中間改變表示數(shù)據(jù)的方式。在處理
    發(fā)表于 03-30 14:48

    C語(yǔ)言怎樣處理json文件?

    獲取到的JSON文件,怎樣通過(guò)C語(yǔ)言進(jìn)行處理,因?yàn)閱纹瑱C(jī)里面只能用C語(yǔ)言,有沒(méi)有C語(yǔ)言處理起來(lái)比
    發(fā)表于 11-01 06:16

    android使用JSON進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換

    本文將快速講解 JSON 格式,并通過(guò)代碼示例演示如何分別在客戶端和服務(wù)器端進(jìn)行 JSON 格式數(shù)據(jù)處理。 什么是JSON
    發(fā)表于 12-04 11:51 ?0次下載

    數(shù)據(jù)庫(kù)中如何使用不同數(shù)據(jù)結(jié)構(gòu)定義方式來(lái)處理連接運(yùn)算

    在供暖收費(fèi)系統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)中 當(dāng)兩個(gè)表連接運(yùn)算的要求為元素和集合之間運(yùn)算時(shí) 可以利用集合的冪運(yùn)算進(jìn)行簡(jiǎn)化處理 討論了幾種不同數(shù)據(jù)結(jié)構(gòu)定義方式來(lái)處理
    發(fā)表于 10-30 17:19 ?2次下載
    <b class='flag-5'>數(shù)據(jù)</b>庫(kù)中如何使用不同<b class='flag-5'>數(shù)據(jù)</b>表<b class='flag-5'>結(jié)構(gòu)</b>定義方式<b class='flag-5'>來(lái)處理</b>連接運(yùn)算

    如何使用Web3Js來(lái)處理區(qū)塊鏈斷開(kāi)或重新啟動(dòng)

    如果您的團(tuán)隊(duì)在生產(chǎn)中使用Web3Js,那么您必須意識(shí)到在Web3Js中沒(méi)有內(nèi)置的重新連接功能來(lái)處理區(qū)塊鏈斷開(kāi)或重新啟動(dòng)。因此,通常情況下,當(dāng)連接下降時(shí),需要重新啟動(dòng)NodeJS服務(wù)以便再次連接到區(qū)塊鏈。這不是一個(gè)很實(shí)用的方法。
    發(fā)表于 03-03 09:25 ?2435次閱讀

    在Python中高效使用JSON的四種方法

    字典和列表是 Python的兩種數(shù)據(jù)類型,也是用來(lái)處理JSON的完美工具。本文將主要分享以下內(nèi)容:如何載入、編寫JSON?如何在命令行上優(yōu)化、校驗(yàn)J
    的頭像 發(fā)表于 09-14 15:17 ?3008次閱讀
    在Python中高效使用<b class='flag-5'>JSON</b>的四種方法

    Danfo.js提供高性能、直觀易用的數(shù)據(jù)結(jié)構(gòu),支持結(jié)構(gòu)數(shù)據(jù)的操作和處理

    Danfo.js 是個(gè) JavaScript 開(kāi)源庫(kù),提供了高性能、直觀易用的數(shù)據(jù)結(jié)構(gòu),支持結(jié)構(gòu)數(shù)據(jù)的操作和處理。Danfo.
    的頭像 發(fā)表于 09-23 18:21 ?5618次閱讀

    什么是JSON JSON的語(yǔ)法規(guī)則

    JSON數(shù)據(jù)交換格式 JSON(JavaScript Object Notation, JS 對(duì)象簡(jiǎn)譜) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于
    的頭像 發(fā)表于 08-25 15:40 ?2946次閱讀

    如何利用Dataloder來(lái)處理加載數(shù)據(jù)

    在Pytorch中,torch.utils.data中的Dataset與DataLoader是處理數(shù)據(jù)集的兩個(gè)函數(shù),用來(lái)處理加載數(shù)據(jù)集。通常情況下,使用的關(guān)鍵在于構(gòu)建dataset類。
    的頭像 發(fā)表于 02-24 10:42 ?793次閱讀
    如何利用Dataloder<b class='flag-5'>來(lái)處理</b>加載<b class='flag-5'>數(shù)據(jù)</b>集

    結(jié)構(gòu)數(shù)據(jù):ProtoBuf試用與JSON的比較

    XML、JSON 也可以用來(lái)存儲(chǔ)此類結(jié)構(gòu)數(shù)據(jù),但是使用ProtoBuf表示的數(shù)據(jù)能更加高效,并且將數(shù)據(jù)壓縮得更小。
    發(fā)表于 03-08 15:43 ?2103次閱讀

    支持的JSON數(shù)據(jù)選項(xiàng)介紹

    GPU 加速的 RAPID JSON 數(shù)據(jù)處理
    的頭像 發(fā)表于 07-05 16:30 ?630次閱讀

    如何利用Python和pandas來(lái)處理json數(shù)據(jù)

    了如何利用Python和pandas(Python的第三方庫(kù))來(lái)處理json數(shù)據(jù),主要內(nèi)容包含: json數(shù)據(jù)簡(jiǎn)介 常用
    的頭像 發(fā)表于 11-01 10:59 ?3038次閱讀
    如何利用Python和pandas<b class='flag-5'>來(lái)處理</b><b class='flag-5'>json</b><b class='flag-5'>數(shù)據(jù)</b>

    怎么js保存數(shù)據(jù)

    JS保存數(shù)據(jù)是Web開(kāi)發(fā)中非常重要的一個(gè)功能,它能夠?qū)⒂脩舻妮斎牖蛘咂渌?b class='flag-5'>數(shù)據(jù)存儲(chǔ)在瀏覽器中,隨后方便地讀取和使用。在本文中,我們將討論不同的數(shù)據(jù)保存方式以及如何使用
    的頭像 發(fā)表于 11-27 16:10 ?1394次閱讀

    什么是JSON數(shù)據(jù)庫(kù)

    如何理解JSON數(shù)據(jù)庫(kù)?作為NoSQL數(shù)據(jù)庫(kù)的一種類型,JSON數(shù)據(jù)庫(kù)有哪些優(yōu)勢(shì)呢?JSON
    的頭像 發(fā)表于 12-02 08:04 ?1251次閱讀
    什么是<b class='flag-5'>JSON</b><b class='flag-5'>數(shù)據(jù)</b>庫(kù)

    JSON協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用JSON協(xié)議和服務(wù)器交互

    語(yǔ)言。 JSON 是一種輕量級(jí)的數(shù)據(jù)交換格式,它基于 ECMAScript (w3c制定的js規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語(yǔ)言的文本格式來(lái)存儲(chǔ)和表示
    的頭像 發(fā)表于 09-25 16:14 ?2156次閱讀
    <b class='flag-5'>JSON</b>協(xié)議是什么,物聯(lián)網(wǎng)中的RTU中如何使用<b class='flag-5'>JSON</b>協(xié)議和服務(wù)器交互