Javascript无法读取JSON数据

Javascript无法读取JSON数据,javascript,json,Javascript,Json,我使用以下代码从网站调用API 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&a

我使用以下代码从网站调用API

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?

尝试以下内容

 document.getElementById("meterVal").innerHTML = JSONOBJ[0].kWh_Tot_Min;
你有两个问题

首先

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

您需要
JSON.parse
才能转到另一个方向

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

您正在忽略数组并尝试将其视为对象

在访问对象的属性之前,需要访问数组中的对象



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

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

当然,我必须用

JSON.parse(JSONOBJ);

非常感谢你的帮助

不应该是
JSONOBJ[0].kWh\u Tot\u Min
既然
JSONOBJ
[]
的数组,我相信JSONOBJ是字符串而不是数组。它是JSON格式的,就像您可能发送到服务器的一样。您可以使用JSON.parse将其转换回数组。您可以尝试apiObject[0]。kWh\u Tot\u minis不是
apiObject
已经是对象了吗?你需要解析吗?@theKidOfArcrania-因为我们看不到
callApi
函数的代码,所以我们无法知道。因为OP试图使用JSON.*函数,所以我假设它不是。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-问题:我需要做什么才能得到正确的值,即127009.1?回答:JSON.parse(JSONOBJ)[0].kWh\u Tot\u Min包含正确的值请花一些时间解释为什么这是问题的解决方案。
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;
JSON.parse(JSONOBJ);