JavaScript对象为JSON Node-RED

时间:2017-05-17 10:16:20

标签: javascript json node-red

我试图将我的红色节点流生成的java脚本对象传递给JSON格式。但这让我很难知道如何去做。 获得的对象脚本是一个小时和分钟,写在屏幕上,例如" 13:02"。在"结果"屏幕我需要以JSON格式看到

{"time": "hh: mm"}

但我得到了" hh:mm"在屏幕上,但我认为不是在json。

此外,当我将URL提交到客户端Web服务并尝试使用JSON检查结果时,我收到此错误: 解析JSON数据时出错

这是代码:

msg.headers = {"Content-type" : "application/json"}
var now     = new Date(); 
var hour    = now.getHours();
var minute  = now.getMinutes();
if(hour.toString().length == 1) {
var hour = '0'+hour;}
if(minute.toString().length == 1) {
var minute = '0'+minute;
}
msg.payload = hour+':'+minute;
JSON.stringify({"time": msg.payload});
return msg;`

调试消息显示它是s字符串:

enter image description here

2 个答案:

答案 0 :(得分:1)

如果要返回JSON对象,则根本不应该使用JSON.stringify()函数。只需在有效负载字段中组合要发送的对象即可。

msg.headers = {"Content-type" : "application/json"}
var now     = new Date(); 
var hour    = now.getHours();
var minute  = now.getMinutes();
if(hour.toString().length == 1) {
  var hour = '0'+hour;
}
if(minute.toString().length == 1) {
  var minute = '0'+minute;
}
msg.payload = {
  "time": hour+':'+minute
}
return msg;

此外,如果您确实需要将对象转换为字符串,反之亦然,请使用转换msg.payload的托盘中的JSON节点。

enter image description here

答案 1 :(得分:0)

将结果分配给变量。 JSON.stringify将返回一个新对象:msg不会受到影响

msg.payload = hour+':'+minute;
var newMsg = JSON.stringify({"time": msg.payload});
return newMsg;

实施例

var msg = {};

var now     = new Date(); 
var hour    = now.getHours();
var minute  = now.getMinutes();

if(hour.toString().length == 1) {
  hour = '0'+hour;
}

if(minute.toString().length == 1) {
  minute = '0'+minute;
}
msg.payload = hour+':'+minute;
var newMsg = JSON.stringify({"time": msg.payload});
console.log(newMsg);