0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么用C+JS结构来处理JSON数据?

汽车电子技术 来源:IOT物联网小镇 作者:船长老四 2023-02-14 13:46 次阅读

【面对的问题】

物联网产品的开发过程中,对JSON格式的数据处理是一个强需求,例如亚马逊的 AWS IOT平台,设备与后台之间的通讯数据都是JSON格式,先瞄一眼大概的样子:

图片

这是一个真实产品的通讯数据,设备端的代码C代码中利用cJSON这个开源工具来完成JSON字符的解析和组装工作。代码我这里就不贴了,解析函数很长,要滚动好多次鼠标滑轮。而且一不注意释放资源就会发生内存泄漏!



那么,是否有更好的方式来解决这个问题呢?

答案就是这篇文章介绍的duktape引擎!

【Duktape简介】

这里只是简单介绍下duktape,详细的介绍大家自己去googleDuktape 是一个嵌入式 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.嵌入式系统

只需要把编译器换成对应的交叉编译器即可。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2903

    文章

    44240

    浏览量

    371020
  • IOT
    IOT
    +关注

    关注

    186

    文章

    4174

    浏览量

    196170
  • JSON
    +关注

    关注

    0

    文章

    117

    浏览量

    6940
收藏 人收藏

    评论

    相关推荐

    JSON 数据格式

    )之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。在处理
    发表于 03-30 14:48

    C语言怎样处理json文件?

    获取到的JSON文件,怎样通过C语言进行处理,因为单片机里面只能用C语言,有没有C语言处理起来比
    发表于 11-01 06:16

    android使用JSON进行网络数据交换

    本文将快速讲解 JSON 格式,并通过代码示例演示如何分别在客户端和服务器端进行 JSON 格式数据处理。 什么是JSON
    发表于 12-04 11:51 0次下载

    数据库中如何使用不同数据结构定义方式来处理连接运算

    在供暖收费系统的关系数据库中 当两个表连接运算的要求为元素和集合之间运算时 可以利用集合的幂运算进行简化处理 讨论了几种不同数据结构定义方式来处理
    发表于 10-30 17:19 2次下载
    <b class='flag-5'>数据</b>库中如何使用不同<b class='flag-5'>数据</b>表<b class='flag-5'>结构</b>定义方式<b class='flag-5'>来处理</b>连接运算

    如何使用Web3Js来处理区块链断开或重新启动

    如果您的团队在生产中使用Web3Js,那么您必须意识到在Web3Js中没有内置的重新连接功能来处理区块链断开或重新启动。因此,通常情况下,当连接下降时,需要重新启动NodeJS服务以便再次连接到区块链。这不是一个很实用的方法。
    发表于 03-03 09:25 2211次阅读

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

    字典和列表是 Python的两种数据类型,也是用来处理JSON的完美工具。本文将主要分享以下内容:如何载入、编写JSON?如何在命令行上优化、校验J
    的头像 发表于 09-14 15:17 2702次阅读
    在Python中高效使用<b class='flag-5'>JSON</b>的四种方法

    Danfo.js提供高性能、直观易用的数据结构,支持结构数据的操作和处理

    Danfo.js 是个 JavaScript 开源库,提供了高性能、直观易用的数据结构,支持结构数据的操作和处理。Danfo.
    的头像 发表于 09-23 18:21 5237次阅读

    什么是JSON JSON的语法规则

    JSON数据交换格式 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于
    的头像 发表于 08-25 15:40 2614次阅读

    如何利用Dataloder来处理加载数据

    在Pytorch中,torch.utils.data中的Dataset与DataLoader是处理数据集的两个函数,用来处理加载数据集。通常情况下,使用的关键在于构建dataset类。
    的头像 发表于 02-24 10:42 563次阅读
    如何利用Dataloder<b class='flag-5'>来处理</b>加载<b class='flag-5'>数据</b>集

    结构数据:ProtoBuf试用与JSON的比较

    XML、JSON 也可以用来存储此类结构数据,但是使用ProtoBuf表示的数据能更加高效,并且将数据压缩得更小。
    发表于 03-08 15:43 1828次阅读

    支持的JSON数据选项介绍

    GPU 加速的 RAPID JSON 数据处理
    的头像 发表于 07-05 16:30 412次阅读

    如何利用Python和pandas来处理json数据

    了如何利用Python和pandas(Python的第三方库)来处理json数据,主要内容包含: json数据简介 常用
    的头像 发表于 11-01 10:59 2227次阅读
    如何利用Python和pandas<b class='flag-5'>来处理</b><b class='flag-5'>json</b><b class='flag-5'>数据</b>

    怎么js保存数据

    JS保存数据是Web开发中非常重要的一个功能,它能够将用户的输入或者其他数据存储在浏览器中,随后方便地读取和使用。在本文中,我们将讨论不同的数据保存方式以及如何使用
    的头像 发表于 11-27 16:10 983次阅读

    什么是JSON数据

    如何理解JSON数据库?作为NoSQL数据库的一种类型,JSON数据库有哪些优势呢?JSON
    的头像 发表于 12-02 08:04 822次阅读
    什么是<b class='flag-5'>JSON</b><b class='flag-5'>数据</b>库

    JSON协议是什么,物联网中的RTU中如何使用JSON协议和服务器交互

    语言。 JSON 是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示
    的头像 发表于 09-25 16:14 417次阅读
    <b class='flag-5'>JSON</b>协议是什么,物联网中的RTU中如何使用<b class='flag-5'>JSON</b>协议和服务器交互