『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 9603|回复: 18

[技术探讨] 求懂JavaScript的大神帮忙在nodered里面转换下json (已解决)

[复制链接]

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

发表于 2019-5-6 13:52:34 | 显示全部楼层 |阅读模式
本帖最后由 xieahui 于 2019-5-6 16:29 编辑

24元的那个GPS模块F大获取的JSON是下面这样的格式
求大神帮忙转换下只需要longitude和latitude的JSON格式
然后MQTT给homeassistant

    
{
  "ret": 0,
  "msg": "OK",
  "data": [
    {
      "imei": "862964024393013",
      "name": "RW67",
      "dev_type": "W1",
      "device_info": 0,
      "device_info_new": 4,
      "seconds": 20387,
      "gps_time": 1556757183,
      "sys_time": 1556757179,
      "heart_time": 1556777550,
      "server_time": 1556777566,
      "lng": 121.15726,
      "lat": 28.338941,
      "course": ……………………
      "group_id": 0
    }
  ]
}

//帮忙转换成下面这种格式让HA-MQTT-device_tracker

{
  "longitude": 121.15726,
  "latitude": 28.338941
}


下面是node red的大神帮忙转换下啊 不懂JSON自己去百度google搞不定
以下是nodered代码或文件
[{"id":"8924f1d0.5a5fb","type":"tab","label":"1","disabled":false,"info":""},{"id":"9a1fa073.93115","type":"mqtt out","z":"8924f1d0.5a5fb","name":"","topic":"phone/location/tracker","qos":"","retain":"","broker":"64f0b1f0.c4999","x":580,"y":220,"wires":[]},{"id":"bafaf3da.574a","type":"inject","z":"8924f1d0.5a5fb","name":"手动输入GPS","topic":"","payload":"{   "ret": 0,   "msg": "OK",   "data": [     {       "imei": "862964024393013",       "name": "RW67",       "dev_type": "W1",       "device_info": 0,       "device_info_new": 4,       "seconds": 20387,       "gps_time": 1556757183,       "sys_time": 1556757179,       "heart_time": 1556777550,       "server_time": 1556777566,       "lng": 121.15726,       "lat": 28.338941,       "course": 88,       "speed": 11,       "status": "01390488000000000001000000000000",       "power": "51%",       "location": "GPS",       "acc": "-1",       "acc_seconds": 0,       "group_id": 0     }   ] }","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":220,"wires":[["9a1fa073.93115","26d49fba.9442c","40f39ac0.ecbec4"]]},{"id":"40f39ac0.ecbec4","type":"debug","z":"8924f1d0.5a5fb","name":"成功","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":590,"y":280,"wires":[]},{"id":"26d49fba.9442c","type":"function","z":"8924f1d0.5a5fb","name":"解析求助","func":"const longitude = msg.payload.msg\nconst latitude = msg.payload.msg\nreturn {longitude,latitude}\n\n//我乱写的","outputs":1,"noerr":0,"x":420,"y":280,"wires":[["40f39ac0.ecbec4"]]},{"id":"64f0b1f0.c4999","type":"mqtt-broker","z":"","name":"","broker":"192.168.203.205","port":"1883","clientid":"203205","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

flows-求助.rar (987 Bytes, 下载次数: 11)




回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-5-6 14:13:05 | 显示全部楼层
写段js代码转换这种?
回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

 楼主| 发表于 2019-5-6 14:16:27 | 显示全部楼层
natic 发表于 2019-5-6 14:13
写段js代码转换这种?

嗯 那晚你说看书去来着……
就是获取的数据是这样
然后喜欢转换下 简单的两个 坐标参数  MQTT给ha
回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-5-6 14:17:55 | 显示全部楼层
xieahui 发表于 2019-5-6 14:16
嗯 那晚你说看书去来着……
就是获取的数据是这样
然后喜欢转换下 简单的两个 坐标参数  MQTT给ha ...

这个简单,我给你写一个,原始的数据是啥?

评分

参与人数 1金钱 +20 收起 理由
咸味土豆 + 20 赠人玫瑰,手留余香!

查看全部评分

回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

 楼主| 发表于 2019-5-6 14:21:32 | 显示全部楼层
natic 发表于 2019-5-6 14:17
这个简单,我给你写一个,原始的数据是啥?

原始获取的数据就是这样的 下面一大段话 帮转 两个坐标参数
{
  "ret": 0,
  "msg": "OK",
  "data": [
    {
      "imei": "862964024393013",
      "name": "RW67",
      "dev_type": "W1",
      "device_info": 0,
      "device_info_new": 4,
      "seconds": 20387,
      "gps_time": 1556757183,
      "sys_time": 1556757179,
      "heart_time": 1556777550,
      "server_time": 1556777566,
      "lng": 121.15726,
      "lat": 28.338941,
      "course": ……………………
      "group_id": 0
    }
  ]
}
 
//帮忙转换成下面这种格式让HA-MQTT-device_tracker
 
{
  "longitude": 121.15726,
  "latitude": 28.338941
}
回复

使用道具 举报

9

主题

242

帖子

1790

积分

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1548
HASS币
0
发表于 2019-5-6 14:22:47 | 显示全部楼层
{
  "longitude": msg.payload.data.lng,
  "latitude": msg.payload.data.lat
}
回复

使用道具 举报

8

主题

2073

帖子

6053

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
6053
金钱
3980
HASS币
145

灌水之王

 楼主| 发表于 2019-5-6 14:26:52 | 显示全部楼层
oemsys 发表于 2019-5-6 14:22
{
  "longitude": msg.payload.data.lng,
  "latitude": msg.payload.data.lat

node red上如何写啊?
我要输出给MQTT 不是很懂如何操作 gpshelp.png



回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-5-6 14:30:57 | 显示全部楼层
var json = JSON.parse('{"ret": 0,"msg": "OK","data": [{"imei": "862964024393013","name": "RW67","dev_type": "W1","device_info": 0,"device_info_new": 4,"seconds": 20387,"gps_time": 1556757183,"sys_time": 1556757179,"heart_time": 1556777550,"server_time": 1556777566,"lng": 121.15726,"lat": 28.338941,"course": "","group_id": 0}]}');
var json2 = {};
json2.longitude = json.data[0].lng;
json2.latitude = json.data[0].lat;
var result = JSON.stringify(result);
console.log(result);

评分

参与人数 1金钱 +20 收起 理由
xieahui + 20 助人为乐!!感谢

查看全部评分

回复

使用道具 举报

23

主题

1338

帖子

6755

积分

超级版主

Rank: 8Rank: 8

积分
6755
金钱
5392
HASS币
100

教程狂人

发表于 2019-5-6 14:32:38 | 显示全部楼层
还有一个问题,是你这个data里面有很多值,有可能会有几个,全部取出来还是固定取一个
回复

使用道具 举报

9

主题

787

帖子

3858

积分

论坛元老

Rank: 8Rank: 8

积分
3858
金钱
3071
HASS币
87
发表于 2019-5-6 14:36:00 | 显示全部楼层

// 原始数据
let loc = msg.payload;
// 转换数据
let result = 
{
  "longitude": loc.data[0].lng,
  "latitude": loc.data[0].lat
}

msg.payload = result;
return msg;

评分

参与人数 2金钱 +40 收起 理由
咸味土豆 + 20 我也来加。
xieahui + 20 谢谢令狐大大

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-25 13:54 , Processed in 0.930702 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表