IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 阿里云开发板HaaS510解析JSON数据 -> 正文阅读

[大数据]阿里云开发板HaaS510解析JSON数据

摘要:JSON是JavaScript的原生数据格式,因此在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。HaaS系列硬件内置了JavaScript引擎,按道理来说,解析JSON数据格式也应该是小菜一碟。

实验目的:通过haas510解析一段固定的JSON字符串,提取出指定的属性值。

硬件:haas510 (2.0版本),USB串口

软件:win7 x64,vscode

目录

?1.为什么要在HaaS510上解析JSON

?2.JavaScript解析JSON的方法

?3.编写解析JSON字符串的源代码

?4.观察实验效果


1.为什么要在HaaS510上解析JSON

如果您设计的物联网设备采用下图所示的结构,MCU通过串口向HaaS510发送多个属性值,那么HaaS510肯定需要对这一长串的数据进行解析才行。

?一串数据可以是字符串形式的,例如下图这样。如果想解析出来3个属性值,那么就需要编写专门的算法,例如截取固定位置的一段数据,或者是查找字符串。这样做的困难在于查找到指定的字符串,例如“beizhu”之后,还需要进一步从字母“u”向后截取7个字符。怎么样,复杂吧。

好在HaaS510提供了JavaScript引擎,内置了对原生JSON数据格式的解析支持。使复杂的数据解析操作一步搞定。

?JSON字符串与普通字符串对比如下图所示,对于JavaScript来说,JSON字符串更加好处理。

?2.JavaScript解析JSON的方法

解析的方法有至少2种以上,本实验中使用JSON.parse()方法。

parse的中文意思是(对句子)作语法分析;作句法分析。英文释义更加形象:

to divide a sentence into parts and describe the grammar of each word or part。

字面意思就是“把一个句子分成几个部分,并描述每个单词或部分的语法”,用在此处再形象不过了。

它的说明如下图所示。该方法将数据转换为 JavaScript 对象。

?转换为JavaScript对象之后,就可以直接调用指定的数据了。下图是一个调用parse方法的例程。可以看到直接用一个小圆点调用指定的属性就可以得到指定属性的值。

?3.编写解析JSON字符串的源代码

本实验直接给出JavaScript源代码。大家可以直接复制并烧写到自己的HaaS510中进行测试。

我们解析一个固定的JSON字符串,使用JavaScript语句很简单,只需要一个语句即可。

var json = '{"uid":"123456","beizhu":"5557589","shijian":"20210919"}';
var obj = JSON.parse(json);

?调用其中的属性也非常简单,例如通过调试串口显示。

console.log(obj);         
console.log(obj.uid);    
console.log(obj.beizhu);   
console.log(obj.shijian);

?完整的代码如下:

var iot = require('iot');
var network = require('network');
var uart = require('uart');
var net = network.openNetWorkClient();
/* 设备三元组信息获取请参考common目录下的iot组件说明 */
var productKey = 'gcCCCCCCu2';
var deviceName = 'ceCCCCCCC01';
var deviceSecret = 'eeSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSb3a9';
// 构建物联网连接实例
var device;
var lightSwitch = 0;

//测试解析一个json字符串,这里并没有解析串口的字符串,而是解析的一个固定数组的字符串。
var json = '{"uid":"123456","beizhu":"5557589","shijian":"20210919"}';
var obj = JSON.parse(json);

  // user uart
  var serial = uart.open({
    id: 'UART2'
  });

  var msgbuf = [97, 98, 99, 100];

  function ArrayToString(fileData) {
    var dataString = "";
    for (var i = 0; i < fileData.length; i++) {
      dataString += String.fromCharCode(fileData[i]);
    }
    return dataString;
  }


net.on('connect', function () {
    device = iot.device({
        productKey: productKey,
        deviceName: deviceName,
        deviceSecret: deviceSecret,
        region: 'cn-shanghai',
        success: function () {
            console.log('iot: [success] connect');
        },
        fail: function () {
            console.log('iot: [failed] connect');
        }
    });
})

setInterval(function () {
    lightSwitch = 1 - lightSwitch;

    // user uart send data
    serial.write(msgbuf);
    //下面显示解析过的内容
    console.log(obj);         
    console.log(obj.uid);    
    console.log(obj.beizhu);   
    console.log(obj.shijian);

/* 错误示范   iot.postProps({
                       payload: {LightSwitch:'0'}
                    })*/
/*正确示范,要想发送属性,就得使用stringify才行*/
    device.postProps(
        JSON.stringify({
            LightSwitch: lightSwitch
        })
    );
  
  }, 5000);

4.观察实验效果

首先连接硬件

?然后烧录源代码。

如您还未掌握使用vscode烧录的方法,请参考文章:

阿里云开发板vscode开发环境搭建https://blog.csdn.net/youngwah292/article/details/120356887?spm=1001.2014.3001.5501icon-default.png?t=L892https://blog.csdn.net/youngwah292/article/details/120356887?spm=1001.2014.3001.5501

下图是vscode烧录完成后的部分截屏。

?烧录成功后,能够实现的功能有哪些呢?请看下图:

?我们重点观察间隔5秒发送的JSON字符串,如下图所示。

?至此,实验成功。

下一步,我将和大家分享,如何将串口接收到的上位机数据进行解析并发送云平台。那样就更加接近一个完整的产品了。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:35:16  更:2021-10-11 17:35:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:53:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码