2016-10-29 16 views
0

Googleプレイスコールの結果からデータを抽出しようとしています。JSONの構文解析が正しくない

私は次のJavaScriptを実行した場合:

alert(JSON.stringify(places[0].geometry.location)); 

を予想通り、私は、次のような出力が得られます。

{"lat":59.9138688,"lng":10.752245399999993} 

私は緯度値と実行を抽出するために、最後に.lat入れがあれば:

alert(JSON.stringify(places[0].geometry.location.lat)); 

私が取得:

undefined 

そして、次のように私はJSON.stringifyせずにアラートを実行する場合:

alert(places[0].geometry.location.lat); 

を私が手:

function(){return a} 

は私が間違って何をしているのですか?

+0

を試してみてください。すでに数値を返します。 'places [0] .geometry.location.lat.toString()'を使用すると文字列にしたい場合は – Roysh

+0

'location'オブジェクトには' lat'を呼び出す 'toJSON'メソッドがあると思います'と' lng'は直列化されるときに機能します。 '' [0] .geometry.location.toJSON'は何を表示しますか? – apsillers

+0

私が知る限りtoJSON法はありません。 –

答えて

1

あなたはこれを行う必要があります。

alert(places[0].geometry.location.lat()); 
+0

それはトリックに感謝します。しかし、なぜそれは最後に必要なのですか? –

+0

@BillNoble latは関数であり、それを呼び出す必要があるため – Ali7091

+0

データ構造が{lat ":59.9138688、" lng ":10.752245399999993} –

2

JSON.stringifyは - 通常(それは多くの種類を取得することができ、が)オブジェクトを受け入れ機能です。 places[0].geometry.location.latは数字で、オブジェクトではないので、数字が必要です。

したがって、文字列を取得するには、Numberプロトタイプに付属の.toString()関数を使用する必要があります。

[0] .geometry.location.latあなたが場所を文字列化する必要はありませんalert(places[0].geometry.location.lat.toString())

+0

今はっきりしているRoyshありがとう。 –

+0

あなたは大歓迎です! 幸運を祈る! :) – Roysh

関連する問題