[面对的问题]
在物联网产品的开发过程中, 对 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 物联网小镇
来源: https://www.cnblogs.com/sewain/p/13183978.html