我正在尝试解析如下所示的JSON:
{ "values" : [{ "alpha":8 },{ "beta":4 },{ "gamma":-3 } ]}
我用:console.log(msg.values.alpha)
解析它,得到:
Missing error handler on `socket`.
TypeError: Cannot read property 'alpha' of undefined
这就是我在其他网站上看到的做法。使用console.log(msg.values)
返回undefined
,仅运行console.log(msg)就返回正确的JSON
。我见过其他人有这个问题,但据说所做的一切都不起作用。谢谢
不要忘记使用JSON.parse
将其解析为对象
msg.values
是一个数组。从技术上讲,您必须通过msg.values[0].alpha.
访问它
更好的解决方案
如果使用下划线npm install underscore
var _ = require('underscore');
var msg = JSON.parse('{ "values" : [{ "alpha":8 },{ "beta":4 },{ "gamma":-3 } ]}');
var alpha = _.find(msg.values, function (value) {
return value.hasOwnProperty('alpha');
}).alpha;
下划线解决方案将允许您不依赖于数组的顺序,因此它可能是更好的样式。
这是我在浏览器中运行的一段代码。