对象问题中的Json对象

时间:2016-12-08 13:46:15

标签: javascript json object

我正在使用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;在这个例子中,我只是说我在说垃圾。我如何获得这些内在属性..?

1 个答案:

答案 0 :(得分:0)

获得current的代码没问题,但是在你到达目的地之前,你已经将msg吹走了。

msg+="<tab>";

在该行之后,msg"[object Object]<tab>",其中没有payload属性,因此msg.payload[key]在尝试访问undefined上的属性时会引发错误。

您希望在循环过程中单独留下msgmsg.payload

例如,如果您将该行中的msg更改为m,则m中的最终结果为"moment<tab>2.13.0<br/>node-red-admin<tab>0.1.2<br/>"

&#13;
&#13;
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;
&#13;
&#13;