分解JSON字符串并使用javascript和php将值输入MYSQL

问题描述 投票:0回答:1

我已经通读了一些问题,但它们要么是用另一种语言编写的,要么是要在网页上解决的,

我使用node-red来接收BLE数据,但数据来自1个长字符串,表示接收到以下内容:

string
[{"timestamp":"2020-02- 
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"DB1265E96B6F","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514   932AC01","ibeaconMajor":1,"ibeaconMinor":2,"rssi":-51,"ibeaconTxPower":-54,"battery":0}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"F0728DEB0B9B","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514932AC01","ibeaconMajor":5,"ibeaconMinor":1,"rssi":-30,"ibeaconTxPower":-62,"battery":0}]

我的目标是以以下格式将数据输入到node-red中

Gateway-Mac,IbeaconMinor,mac,rssi

我以前使用过我不同的收集器来收集数据,它以以下格式给了我字符串

$GPRP,AC233FC02D95,FE2279DCB92B,-70,0201061AFF4C000215ACFD065EC3C011E39BBE1A514932AC0100050003C2

它单独输入了收集的BLE设备数据,而不是输入一个较长的JSON字符串,因此更易于转换和输入。

所以我的问题是我该如何更改

string
[{"timestamp":"2020-02- 
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"DB1265E96B6F","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514   932AC01","ibeaconMajor":1,"ibeaconMinor":2,"rssi":-51,"ibeaconTxPower":-54,"battery":0}
{"timestamp":"2020-02-24T13:44:59Z","type":"iBeacon","mac":"F0728DEB0B9B","bleName":"","ibeaconUuid":"ACFD065EC3C011E39BBE1A514932AC01","ibeaconMajor":5,"ibeaconMinor":1,"rssi":-30,"ibeaconTxPower":-62,"battery":0}]

to

string
[{"timestamp":"2020-02- 
24T13:44:57Z","type":"Gateway","mac":"AC233FC02D95","gatewayFree":96,"gatewayLoad":0.08}

{2020-02-24T13:44:59Z,DB1265E96B6F,ACFD065EC3C011E39BBE1A514932AC01",1,2,-51,-54,0}

{2020-02-24T13:44:59Z,F0728DEB0B9B,ACFD065EC3C011E39BBE1A514932AC01,5,1,-30,-62,0}]

或我如何以以下格式将其输入到mysql中作为mysql字符串

AC233FC02D95,F0728DEB0B9B51,1,-30 

AC233FC02D95,DB1265E96B6F,2,-51

在更改硬件之前,我像这样输入了字符串,但是使用新的json格式,我不确定代码中要更改的内容

GPRP,AC233FC02D95,FE2279DCB92B,-70,0201061AFF4C000215ACFD065EC3C011E39BBE1A514932AC0100050003C2

var raw = msg.payload;
msg.length = raw.length;
msg.raw = raw;
var data = {};

data.major = raw.slice(-10,-4);
data.mac = raw.substring(5,17);
data.hostname = raw.substring(18,30);
data.minor = raw.slice(-8,-4);
data.rssi = raw.substring(31,34)


var str = data.hostname;
var location = str.replace(`AC233FC02D95`, `PURPLE`)



var beacon = parseInt(data.minor ,16);



var msg = {
 topic : "INSERT INTO `test`.`track` (`location`,`beacon`, `mac`,`rssi`) 
VALUES ('"+location+"','"+beacon+"', '"+data.mac+"','"+data.rssi+"');"
}
return msg;
javascript mysql node-red
1个回答
0
投票

只需将带有字符串有效负载的消息传递到JSON节点,它将解析为JSON对象,然后您就可以照常访问字段了。

© www.soinside.com 2019 - 2024. All rights reserved.