我有这样的json数据http://pastebin.com/k3a5UNsL 使用json formater查看时,我想在 possible_persons 对象中使用jquery获取存储在对象上的数据。
我试图循环访问数据,但是如何弄清楚如何获取数据名称,性别,地址等...
当我使用此代码时
function build_possible_persons(result) {
var relationship = result['possible_persons'];
$.each(relationship, function(key, value) {
$.each(value, function(sec_key, sec_value) {
alert(sec_value);
});
});
}
我得到第一个循环结果的警报值的结果,如图0:25,3788825f48716e6c ....,[object],[object]等所示....
如何循环到其中的对象以获取我想要的值? 我试试
function build_possible_persons(result) {
var relationship = result['possible_persons'];
$.each(relationship, function(key, value) {
$.each(value, function(sec_key, sec_value) {
$.each(sec_key.names, function(third_key, third_value) {
alert(third_key);
});
});
});
}
或使用
alert(sec_key.names[0].display);
但没有运气。我创建的代码没有显示结果。
请帮助我查看代码中的漏洞。感谢
答案 0 :(得分:2)
function build_possible_persons(result) {
var persons = result.possible_persons;
alert(persons.map(p => p.addresses ? p.addresses[0].display : 'N/A').join("\n"))
}
编辑:使用arrow functions您可以合并此人的数据:
function build_possible_persons(result) {
var persons = result.possible_persons;
var rows = persons.map(p => {
var address = p.addresses ? p.addresses[0].display : 'N/A';
var name = p.names ? p.names[0].display : 'N/A'
return name + ' ' + address;
});
alert(rows.join('\n'));
}
答案 1 :(得分:1)
我看到的第一个问题是,在您的第二个循环中,sec_key
是文本"names"
(以及您的其他属性。如果您想循环覆盖名称,请替换为:< / p>
$.each(value['names'], function(j, name)
第二个问题:并非所有relationship
都拥有属性names
,因此您需要检查以下内容:
if(value['names']) {
$.each(value['names'], function(....
最后每个&#34;名称&#34;是一个具有第一个和最后一个属性的对象。如果您提醒某个对象,您将无法查看实际名称。您应确保已设置的display
属性或重建字符串
将所有这些结合在一起:
$.each(relationship, function(i, value) {
if (value['names'] !== undefined) {
$.each(value['names'], function(j, name) {
console.log(name.display);
});
}
});