我正在使用nodeJS做一些工作,而我对JSON的了解显然太过初级,因为我没有阅读一些信息。我想知道是否有人可以提供帮助。
这是项目名称列表 - 每个项目名称都有自己的属性。这就是我与之合作的事情......
{
"moment": {
"current": "2.13.0",
"wanted": "2.17.1",
"latest": "2.17.1",
"location": "home/pi/.node-red/node_modules/moment"
},
"node-red-admin": {
"current": "0.1.2",
"wanted": "0.1.3",
"latest": "0.1.3",
"location": "home/pi/.node-red/node_modules/node-red-admin"
}
}
所以第一项称为时刻 - 它有4个属性 - 当前,通缉,最新和位置。第二项是node-red-admin,它也有4个属性
等
所以假设这是坐在msg.payload ...
我想格式化输出..
var m = "";
msg.payload=JSON.parse(msg.payload);
for (var key in msg.payload)
{
m += key;
msg += "<tab>";
var mm = msg.payload[key];
m += mm.current;
m += "<br/>"
}
msg.payload=m;
return msg;
一切都非常好 - 我在m ...中建立消息并获取项目的名称 - 即&#34;时刻&#34;,&#34; node-red-admin&#34 ;等等 - 但显然我在获得内在属性方面迈出了一大步 - 即&#34;当前&#34;在这个例子中,我只是说我在说垃圾。我如何获得这些内在属性..?
答案 0 :(得分:0)
获得current
的代码没问题,但是在你到达目的地之前,你已经将msg
吹走了。
msg+="<tab>";
在该行之后,msg
为"[object Object]<tab>"
,其中没有payload
属性,因此msg.payload[key]
在尝试访问undefined
上的属性时会引发错误。
您希望在循环过程中单独留下msg
和msg.payload
。
例如,如果您将该行中的msg
更改为m
,则m
中的最终结果为"moment<tab>2.13.0<br/>node-red-admin<tab>0.1.2<br/>"
:
var msg = {
payload:
'{' +
' "moment": {' +
' "current": "2.13.0",' +
' "wanted": "2.17.1",' +
' "latest": "2.17.1",' +
' "location": "home/pi/.node-red/node_modules/moment"' +
' },' +
' "node-red-admin": {' +
' "current": "0.1.2",' +
' "wanted": "0.1.3",' +
' "latest": "0.1.3",' +
' "location": "home/pi/.node-red/node_modules/node-red-admin"' +
' }' +
'}'
};
var m="";
msg.payload=JSON.parse(msg.payload);
for (var key in msg.payload)
{
m+=key;
m+="<tab>";
var mm=msg.payload[key];
m+=mm.current;
m+="<br/>"
}
console.log(m);
&#13;