2017-02-12 6 views
0

次のコードを使用して、WebサイトからAPIを呼び出しました。 document.getElementById( "結果")の最初の行にJavascriptがJSONデータを読み取ることができません

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; 
    } 
); 
}; 

。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; 

の2行を使用した後しかし、これは、代わりに出てきます。

undefined 

適切な値を取得するために必要なことは、127009.1ですか?

+0

'JSONOBJ'は' [] 'による配列なので、' JSONOBJ [0] .kWh_Tot_Min; 'ではないでしょうか? – Mikey

+0

私はJSONOBJが配列ではないと信じています。これはJSON形式で、サーバーに送信するものと同じです。 JSON.parseを使用して配列に戻すことができます。 apiObject [0] .kWh_Tot_Minを試してみてください –

答えて

0

試し

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

これが問題の解決策である理由を説明してください。 – GabrielOshiro

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

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 15187073) – Eldelshell

+0

質問:適切な値を取得するためには何が必要ですか。これは127009.1ですか? 回答:JSON.parse(JSONOBJ)[0] .kWh_Tot_Minに正しい値が含まれています – MrBinWin

0

次次の2つの問題を抱えています。

まず

JSON.stringify JSONの文字列にJavaScriptのデータ構造に変換します。

逆の場合は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; 

(これは、明らかに、間質性変数なしで行うことができますが、私は明確にするためにそれを分解しました)。

+0

'apiObject'はすでにオブジェクトですか?あなたはそれを解析する必要がありますか? – theKidOfArcrania

+0

@theKidOfArcrania - 私たちは 'callApi'関数のコードを見ることができないので、私たちは知る方法がありません。 OPはJSON。*関数を使用しようとしているので、私はそれがないと仮定しています。 – Quentin

0

問題が見つかりました。 JSON文字列の最初と最後の角括弧は問題を引き起こしていました。 .replace(/ [[] '] +/g、' ')で削除した後、問題は解決します。もちろん

私はあなたの助けのための

JSON.parse(JSONOBJ); 

おかげで多くのことをしてJSON文字列を解析する必要があります。

関連する問題