JavaScript 反对 JSON Node-RED

JavaScript object to JSON Node-RED

我正在尝试将我的红色节点流生成的 java 脚本对象传递为 JSON 格式。但这让我很难知道该怎么做。 获得的对象脚本是写在屏幕上的小时和分钟,例如“13:02”。在 "result" 屏幕中,我需要以 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 字符串:

将结果赋给一个变量。 JSON.stringify会给你return一个新对象: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);

如果您想 return 一个 JSON 对象,那么您根本不应该使用 JSON.stringify() 函数。只需 assemble 您要在有效负载字段中发送的对象。

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;

此外,如果您确实需要将对象转换为字符串,反之亦然,我们可以使用 pallet 中的 JSON 节点来转换 msg.payload.