我使用以下代码从网站调用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?
答案 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);
非常感谢你的帮助。