Javascript无法读取JSON数据

时间:2017-02-12 19:02:04

标签: javascript json

我使用以下代码从网站调用AP​​I。

function example(){
  // Call the callApi function to create a usable
  // object named apiObject from the API request URL.
  // Put the API request URL in the call
  callApi(
    'http://summary.ekmmetering.com/summary?meters=10068&key=MTAxMDoyMDIw&format=json&reports=15&limit=1&fields=kWh_Tot*',
    function(apiObject){
      // This just displays the object in the result div
      // you can use what ever code you would like to work
      // with the object here               
      var JSONOBJ = JSON.stringify(apiObject, null, 4)
      //document.getElementById("result").innerHTML = JSONOBJ;
      document.getElementById("meterVal").innerHTML = JSONOBJ.kWh_Tot_Min;
    }
  );
};

在document.getElementById(“result”)。innerHTML = JSONOBJ的第一行,输出如下。

[  
   {  
      "Start_Time_Stamp_UTC_ms":1486924437363,
      "End_Time_Stamp_UTC_ms":1486925099387,
      "End_Date":"Sun Feb 12 2017 18:44:59 GMT+0000 (GMT)",
      "Start_Date":"Sun Feb 12 2017 18:33:57 GMT+0000 (GMT)",
      "Meter":10068,
      "Protocol":"v3",
      "Count":663,
      "rejected_bad":0,
      "rejected_duplicates":0,
      "kWh_Tot_DeltaMin":0,
      "kWh_Tot_DeltaMax":0.1,
      "kWh_Tot_Min":127009.1,
      "kWh_Tot_Max":127009.8,
      "kWh_Tot_Diff":0.7
   }
]

然而,一旦我使用第二行代码

document.getElementById("meterVal").innerHTML = JSONOBJ.kWh_Tot_Min;

这就出现了。

undefined

我需要做些什么来获得正确的值,即127009.1?

4 个答案:

答案 0 :(得分:0)

尝试以下

 document.getElementById("meterVal").innerHTML = JSONOBJ[0].kWh_Tot_Min;

答案 1 :(得分:0)

console.log(JSON.parse(JSONOBJ)[0].kWh_Tot_Min);

答案 2 :(得分:0)

你有两个问题。

<强>第一

JSON.stringify将JavaScript数据结构转换为JSON字符串。

你需要JSON.parse走另一条路。

<强>第二

您正在解析的数据结构是对象的数组

您忽略了数组并尝试将其视为对象。

您需要先访问数组中的对象,然后才能访问该对象的属性。

var json = apiObject;
var myArray = JSON.parse(json);
var myObject = myArray[0];
var kWh_Tot_Min = myObject.kWh_Tot_Min;
document.getElementById("meterVal").innerHTML = kWh_Tot_Min;

(显然,这可以在没有插页式变量的情况下完成,但为了清晰起见,我已将其分解)。

答案 3 :(得分:0)

好吧我发现了这个问题。 JSON字符串开头和结尾的方括号导致了问题。用.replace(/ [[]'] + / g,'')删除后,问题就解决了。

当然我必须用

解析JSON字符串
JSON.parse(JSONOBJ);

非常感谢你的帮助。