在 Node-Red 中合并两个 JSON 对象
Merging two JSON Objects in Node-Red
我在尝试将从我的 SQL 服务器数据库检索到的两个 JSON 对象合并到 Node-Red 中的单个对象时遇到一些问题。
我创建的流程如下:
每次调用数据库我都会收到以下对象:
计划:
[{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}]
目标:
[{"GoalID":1,"PlanID":2, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
我创建了两个函数,将这些对象分配给流变量('plans' 和 'goals'),现在我试图将这两个对象合并为一个 JSON 对象。
我不知道是否必须为此目的使用 Join 节点,如果是,如何配置它,但我的想法是以这种格式创建一个 JSON 对象:
[{"GoalID":1,"Plan":{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
首先,我不会将它们设置为流变量,因为如果您在数据库查找过程中收到对 http-in 节点的第二个请求,这些变量将被覆盖。最好将它们添加为 msg
变量,然后它们随 msg
一起流动并且不能被覆盖。
鉴于您不只是组合这 2 个对象来获得键和值的超集,您可能最好只使用函数节点或自己对输出对象 assemble 进行更改。
假设输入类似于:
msg.plans = [{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}]
msg.goals = [{"GoalID":1,"PlanID":2, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
那么函数节点看起来像:
msg.payload = msg.goals[0];
msg.payload.plan = msg.plans[0];
delete msg.goals;
delete msg.plans;
return msg;
更改节点规则类似于
连接节点将使用主题作为键将 2 个对象放入数组或对象中以保存 2 个输入消息。
我在尝试将从我的 SQL 服务器数据库检索到的两个 JSON 对象合并到 Node-Red 中的单个对象时遇到一些问题。
我创建的流程如下:
每次调用数据库我都会收到以下对象:
计划:
[{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}]
目标:
[{"GoalID":1,"PlanID":2, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
我创建了两个函数,将这些对象分配给流变量('plans' 和 'goals'),现在我试图将这两个对象合并为一个 JSON 对象。
我不知道是否必须为此目的使用 Join 节点,如果是,如何配置它,但我的想法是以这种格式创建一个 JSON 对象:
[{"GoalID":1,"Plan":{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
首先,我不会将它们设置为流变量,因为如果您在数据库查找过程中收到对 http-in 节点的第二个请求,这些变量将被覆盖。最好将它们添加为 msg
变量,然后它们随 msg
一起流动并且不能被覆盖。
鉴于您不只是组合这 2 个对象来获得键和值的超集,您可能最好只使用函数节点或自己对输出对象 assemble 进行更改。
假设输入类似于:
msg.plans = [{"PlanID":2,"Status":0,"EndTime":"0001-01-01T00:00:00.000Z"}]
msg.goals = [{"GoalID":1,"PlanID":2, "Type":2,"Message":"Walk 1000 km","Difficulty":0}]
那么函数节点看起来像:
msg.payload = msg.goals[0];
msg.payload.plan = msg.plans[0];
delete msg.goals;
delete msg.plans;
return msg;
更改节点规则类似于
连接节点将使用主题作为键将 2 个对象放入数组或对象中以保存 2 个输入消息。