拿来即用:用C+JS结构来处理JSON数据
【面对的问题】
在物联网产品的开发过程中,对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物联网小镇
- 前台js传入json或map类型数据给后台及后台接收处理操作
- JSON(二):JS对JSON数据的处理、JSON与XML比较
- JS中eval()函数处理返回的json数据
- JS处理JSON数据
- js动态添加行hiddenfield保存xml或json 数据 提交给后台处理
- js json数据的处理
- JS处理Json格式数据
- 使用json把php数据传给js处理
- JS处理各种JSON类型数据
- 关于js处理json格式的数据时遇到的问题
- 笔记:分别用Python、Perl实现对远程服务的访问,并对返回的JSON结构的数据进行处理
- Js处理Json数据的几种方式
- Json数据转化为数据对象的js处理
- 问题集录--JS如何处理和解析Json数据
- JS 对java返回的json格式的数据处理方法
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
- Js处理json数据
- 原生JS的ajax处理json数据格式的异步请求完整例子
- JS中Json数据的处理和解析JSON数据的方法详解
- 为什么JS中eval处理JSON数据要加括号