无法在javascript中访问JSON数组的值

时间:2015-10-16 07:46:01

标签: javascript arrays json

在我的javascript中,我试图从服务器的JSON文件中读取值。该文件包含一个对象数组,但我无法访问这些对象中的值。当我尝试这个时,我的日志说明值是未定义的。但是,当我尝试在数组中对一个Object进行字符串化时,它的工作原理非常好。我做错了什么?

JSON文件:

{
  "NETWORKS": [
    {
      "NETWORK": {
        "STARTDATE": "00:13:33:15:10:2015",
        "SSID": "Ziggo323_AC",
        "WPA": "YES",
        "WEP": "NO",
        "WPS": "YES",
        "OPEN": "NO",
        "WPATEST": {
          "DURATION": "3000",
          "DATE": "00:11:26:24:09:2015",
          "ATTEMPTS": "594",
          "STATUS": "FAILED"
        },
        "WPSTEST": {
          "DURATION": "2932",
          "DATE": "03:11:28:24:09:2015",
          "ATTEMPTS": "9",
          "STATUS": "PASSED"
        }
      }
    },
    {
      "NETWORK1": {
        "STARTDATE": "00:15:26:15:10:2015",
        "SSID": "FreeWiFi",
        "WPA": "NO",
        "WEP": "NO",
        "WPS": "NO",
        "OPEN": "YES"
      }
    }
  ]
}

javascript函数

function LoadTestResults() {
  $.ajax({
    type: 'POST',
    url: 'GetJSON.php',
    data: "TestResults.json",
    dataType: "json",
    success: function (data) {
      var wpsDuration = data.NETWORKS[0];
      console.log(JSON.stringify(wpsDuration)); // output ={"NETWORK":{"STARTDATE":"00:13:33:15:10:2015" etc.
      console.log(wpsDuration.WPA); // output = undefined
    }
  });
}

3 个答案:

答案 0 :(得分:2)

试试:

wpsDuration.NETWORK.WPA

或循环:

for (var k in data.NETWORKS) {
  var network = data.NETWORKS[k];
  var networkKey = Object.keys(network).pop();

  console.log(networkKey, network[networkKey].WPA);
}

答案 1 :(得分:0)

在此行debugger;前加var wpsDuration = data.NETWORKS[0];并检查data

  

调试时保持控制台处于打开状态。一旦成功将达到   调试器会命中。

     

然后转到控制台窗口并尝试不同的组合。这将   帮助您理解您的对象。

答案 2 :(得分:0)

我试过,它对我有用

放一个调试器;在此行之前var wpsDuration = data.NETWORKS [0];并检查数据