【问题标题】:Access JSON array values?访问 JSON 数组值?
【发布时间】:2012-04-19 12:16:17
【问题描述】:

eSo 我已经从我的数据库中获取了一些已解析的 php 数据,然后使用 json_encode() 将其解析为 JSON。然后我使用 JSONparse() 来制作我的数组对象。我的代码如下所示:

$.get("fetchDatabase.php", function(data){
var parsedData = jQuery.parseJSON(data); }

我留下了数组parsedData,看起来像这样:

[

{"person0":{"name":["Erik Steen"],"age":["1"]}},
{"person1":{"name":["Frida Larsson"],"age":["1"]}},
{"person2":{"name":["Abdi Sabrie"],"age":["2"]}},
{"person3":{"name":["Achraf Malak"],"age":["3"]}},
{"person4":{"name":["Adam Anclair"],"age":["1"]}}

]

我已将这些数组放在一个名为

的数组中
var peopleArray= { people: [ parsedData ] };

到目前为止一切顺利。现在我想要的是能够访问某些 people 属性。比如名字或年龄。我如何定位这些属性?我试图在没有运气的情况下打印这些属性。我试过了:

alert (peopleArray.people[0].person1.name);

返回:

Uncaught TypeError: Cannot read property 'name' of undefined

如何访问这些属性?

【问题讨论】:

  • 看起来你有一个错字“namn”?
  • 仅供参考,peopleArray 不是一个数组,而是一个对象。
  • 类型是我将变量名称转换为更易于理解的名称。我现在已经编辑了。 bfvaretto:这对我来说是个大问题吗?我怎样才能访问人民的名字?或者如果那不可能:我怎样才能使它成为一个数组而不是一个对象?跳过 parseJSON?

标签: php json parsing multidimensional-array data-access


【解决方案1】:

除了错字(“namn”)之外,问题在于您将数组放入数组中:

var peopleArray = { people: [ parsedData ] };

既然parsedData 是一个数组,那么你最终得到的结构是这样的:

// peopleArray
{ people :  [ [  { "person0" : ... }, ...  ] ]  }
//  oops -----^

看到问题了吗?因为parsedData 已经是一个数组,所以正确的代码应该是:

var peopleArray = { people: parsedData };

【讨论】:

  • 我明白了。我试过使用你的建议: var peopleArray = { people: parsedData };但这没有区别 - 我仍然无法使用以下方法访问我的姓名: peopleArray.people[0].person1.name Is still undefined
  • peopleArray.people 的值是多少? peopleArray.people[0] 的值是多少? peopleArray.people[0].person1呢?
  • peopleArray.people[0] 给了我[object Object]
  • 对象是什么样的? (在 Firebug 或 Web Inspector 中使用 console.log(),而不是 alert()。)
  • 谢谢,这个建议非常好。我不知道您可以注销这些对象。有了这些知识,我就可以解决这个问题,因为这只是使用例如 ['name'] 而不是 [0]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多