javascript - Javascript - 如何访问和处理嵌套对象数组或JSON?

我有一个包含对象和数组的嵌套数据结构,我该如何提取这些信息,例如,访问特定或多个值?

例如:


var data = {


 code: 42,


 items: [{


 id: 1,


 name: 'foo'


 }, {


 id: 2,


 name: 'bar'


 }]


};



我该如何访问items中第二项的name

时间:

你可以用这种方式访问

 
data.items[1].name



 

或者


data["items"][1]["name"]



两种方法都相等。

如果你愿意包含库,使用JSONPath会是最灵活的解决方案之一: https://github.com/s3u/JSONPath (node和浏览器)

对于你的用例,json路径将是:

 
$..items[1].name



 

所以:


var secondName = jsonPath.eval(data,"$..items[1].name");



我喜欢JQuery,它更简洁,易于阅读。


 $.each($.parseJSON(data), function (key, value) {


 alert(value.<propertyname>);


});

你可以使用lodash _get函数:


var object = { 'a': [{ 'b': { 'c': 3 } }] };



_.get(object, 'a[0].b.c');


// => 3



如果你正在寻找一个或多个符合特定条件的对象你可以使用以下几个选项query-js


//will return all elements with an id larger than 1


data.items.where(function(e){return e.id > 1;});


//will return the first element with an id larger than 1


data.items.first(function(e){return e.id > 1;});


//will return the first element with an id larger than 1 


//or the second argument if non are found


data.items.first(function(e){return e.id > 1;},{id:-1,name:""});



还有一个singlesingleOrDefault,它们的工作方式与firstfirstOrDefault一样,唯一的区别是,如果找到多个匹配项,它们会抛出。

...