对象数组的 JSON.parse

新手上路,请多包涵

服务器以 JSON 格式返回对象数组。看起来是这样的:

 {"d":"[
  {\"Id\":1,\"IsGood\":true,\"name1\":\"name1dsres\",\"Name2\":\"name2fdsfd\",\"name3\":  \"name3fdsgfd\",\"wasBorn\":\"\\/Date(284011000000)\\/\"},
  {\"Id\":2,\"IsGood\":false,\"name1\":\"fdsfds\",\"name2\":\"gfd3im543\",\"name3\":\"3543gfdgfd\",\"WasBorned\":\"\\/Date(281486800000)\\/\"}
]"}

我需要使用 JSON.parse 函数进行解析。我这样做是这样的:

    function myFunction(dataFromServer){
      var parsedJSON = JSON.parse(dataFromServer.d);
         for (var item in parsedJSON.d) {
          // how do I get the fields of current item?
      }

此代码无效,它返回未定义

for (var item in parsedJSON) {
      alert(item.Id);
}

原文由 user266003 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 406
2 个回答

这非常有效

    function myFunction(dataFromServer){
       var parsedJSON = JSON.parse(dataFromServer.d);
       for (var i=0;i<parsedJSON.length;i++) {
            alert(parsedJSON[i].Id);
         }
 }

但这不

    function myFunction(dataFromServer){
           var parsedJSON = JSON.parse(dataFromServer.d);
           for (var item in parsedJSON) {
               alert(item.Id);
         }
 }

原文由 user266003 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以像访问任何对象一样访问它们:

 var id = item.Id;
if (item.IsGood) { ... }

如果您想枚举它们以某种方式使用,请查看 这个 SO 问题

原文由 Rich O‘Kelly 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏