【问题标题】:How to parse through a JSON object Map如何通过 JSON 对象映射解析
【发布时间】:2014-04-09 18:36:57
【问题描述】:

如果我有 JSON 对象映射:

var dataItem=[{
  "Lucy":{
    "id": 456,
    "full_name": "GOOBER, ANGELA",
    "user_id": "2733245678",
    "stin": "2733212346"
  },
  "Myra":{
    "id": 123,
    "full_name": "BOB, STEVE",
    "user_id": "abc213",
    "stin": "9040923411"
  }
}]

我想遍历这个列表并访问名称(即 Lucy、Myra )和相应的信息

我遇到的所有循环都像这样遍历列表:

var dataItem = [
    {"Name":"Nthal","Class":3,"SubjectName":"English "},
    {"Name":"Mishal","Class":4,"SubjectName":"Grammer"},
    {"Name":"Sanjeev","Class":3,"SubjectName":"Social"},
    {"Name":"Michal","Class":5,"SubjectName":"Gk"},
]

for(x in dataItem)
{
alert(dataItem[x].Name);
alert(dataItem[x].Class);
alert(dataItem[x].SubjectName);
}

提前致谢

【问题讨论】:

标签: javascript json loops map


【解决方案1】:

你所拥有的不是 JSON,可能是因为你已经解析了它。您拥有的是一个由单个对象组成的数组,其键名是其键名。无论如何,我将向您展示如何访问这些数据:

var data = dataItem[0];
for(name in data) {
    alert(name);
    alert(data[name].id);
    alert(data[name].full_name);
}

【讨论】:

  • 非常感谢您的快速回复。我添加了这个代码,对于名称,我得到了每个字母而不是全名。因此,对于“Lucy”,对于 for 的每次迭代,我都会得到“L”、“U”、“C”、“Y”,而不是“lucy”的全名。你能帮我么 ?我哪里错了?
  • 在我看来,它永远不会将我的 JSON 字符串转换为 JSON 对象。我尝试使用 JSON.parse 和 $.parseJSON。它们似乎都不起作用。
  • 很抱歉给您带来不便。我的问题是我正在使用 console.log (" jsonObj:"+jsonObj);这将我的对象转换为字符串,因此打印错误的数据。
  • @greengrassbluesky 没问题,如果你想用这样的字符串记录一个对象,你可以将它们作为单独的参数传递给console.log,就像这样:console.log('jsonObj:', jsonObj);。这应该会给你一些不错的输出。
【解决方案2】:
for (var x in dataItem[0]) {
    if (dataItem[0].hasOwnProperty(x)) {
        console.log(x);
    }
}

http://jsfiddle.net/B44LW/

如果你想要其他属性,那么你可以使用括号表示法:

dataItem[0][x].id

【讨论】:

  • 非常感谢您制作小提琴。很抱歉,我没有在原始问题中提到我也在循环之前将 JSON 字符串转换为 JSON 对象。原来问题在于转换。我将小提琴更新为:jsfiddle.net/B44LW/1
猜你喜欢
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多