2012-05-03 16 views
1

これを参照していますhttps://developers.google.com/maps/documentation/places/#PlaceDetails JSONの結果は常にaddress_componentsの詳細をすべて保持すると予想していました。しかし、私の検索の中には、street_number、postal_code、その他の文字列がありませんでした。インテリセンスを見ると、address_componentsのうちの1つが返され、administrative_area_level_2が返されました。Google JSONの詳細がありません

私はいつも元の値が空であっても返されることを期待していたので、これは私をループに投げかけました。また、私はそうのような期待収益をハードコーディングされた:私は、コンポーネントはすべての結果を返すように期待することはできませんので

array.result.address_components(0).long_name 

が、私はそれらを適切にアクセスして、私はときに何をすべきかを把握するための新しい方法が必要ですいくつか欠けている。

+0

どのようなプログラミング言語を話していますか? –

+0

VB.netは私が使っているものです。私は選択されたケースを使用して各コンポーネントのタイプを調べなければならないかもしれないと思っています。 – Mitchell

+0

私はあなたが自分で作っていないデータに関しては、決して推測をするべきではないと思います。変数を使用する前に、変数が存在することを確認してください。 –

答えて

0

私はこの問題を処理するために使用したケースステートメントです。うまくいきましたが、最も洗練されたソリューションであるかどうかは不明です。

Dim street As String = "" 
Dim city As String = "" 
Dim state As String = "" 
Dim country As String = "" 
Dim zip As String = "" 
Dim phone As String = "" 
Dim website As String = "" 

' No guareentee to the order of even if the data will be there so we check each type. ' 
For j = 0 To array.result.address_components.Length - 1 
    Select Case array.result.address_components(j).types(0) 
     Case "street_number" 
      street += array.result.address_components(j).long_name() 
     Case "route" 
      street += " " & array.result.address_components(j).long_name() 
     Case "locality" 
      city = array.result.address_components(j).long_name() 
     Case "administrative_area_level_1" 
      state = array.result.address_components(j).long_name() 
     Case "country" 
      country = array.result.address_components(j).long_name() 
     Case "postal_code" 
      zip = array.result.address_components(j).long_name() 
    End Select 
Next 

私は基本的にはaddress_componentsを循環し、その型の値をチェックします。値が私が探している値であれば、私はそれを割り当てます。私は後でストリート番号がない場合に追加する空白を削除するために、ストリートでトリム()を呼び出します。

関連する問題