【面对的问题】

在物联网产品的开发过程中,对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物联网小镇

最新文章

  1. React 组件性能优化
  2. 【leetcode】Perfect Squares (#279)
  3. Linux流量监控工具
  4. 实现Activity刷新 (转)
  5. .net下各个数据类型所占用的字节
  6. JavaScript一个经典问题
  7. 【ubuntu java】java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
  8. jdbc 配置properties实现
  9. Android -- 分享功能和打开指定程序
  10. javascript 逻辑运算符
  11. android eclipse集成环境
  12. php里 \r\n换行问题
  13. k-近邻算法理解
  14. Java基础学习笔记2
  15. 深度解析javascript中的浅复制和深复制
  16. Nlpir Parser敏感词搜索灵玖语义技术应用
  17. [POJ 3581]Sequence
  18. java异常处理、多态
  19. Asp.Net SignalR 集群会遇到的问题
  20. TPYBoard开发板搭建,实现隐秘通信

热门文章

  1. 树链剖分 (求LCA,第K祖先,轻重链剖分、长链剖分)
  2. [Office#PPT]0001.实例剖析-如何制作一个牛B的融资PPT
  3. 【Gradle教程】Gradle 入门
  4. MVVM 小雏形 knockout
  5. js匿名函数和date对象,math对象
  6. Html超链接和表单
  7. 面试问题---JAVA程序CPU占用过高怎么定位
  8. Java实现 蓝桥杯VIP 算法训练 暗恋
  9. Java实现蓝桥杯VIP 算法训练 阶乘末尾
  10. IDEA突然无法运行