6

JSON 応答値は次のようになります"types" : [ "sublocality", "political" ]。タイプの最初の値を取得する方法、またはサブローカリティという単語を取得する方法は?

4

3 に答える 3

16
String string = yourjson;

JSONObject o = new JSONObject(yourjson);
JSONArray a = o.getJSONArray("types");
for (int i = 0; i < a.length(); i++) {
    Log.d("Type", a.getString(i));
}

上記の行のみを解析する場合、これは正しいでしょう。GoogleMaps ジオコードからタイプにアクセスするには、address_components よりも結果の配列を取得する必要があることに注意してください。その後、オブジェクト components.getJSONObject(index) にアクセスできます。

これは、自分のプロジェクトで必要だった、formatted_address のみを解析する単純な実装です。

private void parseJson(List<Address> address, int maxResults, byte[] data)
{
    try {
        String json = new String(data, "UTF-8");
        JSONObject o = new JSONObject(json);
        String status = o.getString("status");
        if (status.equals(STATUS_OK)) {

            JSONArray a = o.getJSONArray("results");

            for (int i = 0; i < maxResults && i < a.length(); i++) {
                Address current = new Address(Locale.getDefault());
                JSONObject item = a.getJSONObject(i);

                current.setFeatureName(item.getString("formatted_address"));
                JSONObject location = item.getJSONObject("geometry")
                        .getJSONObject("location");
                current.setLatitude(location.getDouble("lat"));
                current.setLongitude(location.getDouble("lng"));

                address.add(current);
            }

        }
    catch (Throwable e) {
        e.printStackTrace();
    }

}
于 2013-02-05T13:53:46.973 に答える
1

それらの値を取得するには、そのJSONを解析する必要があります。AndroidでJSONObjectクラスとJSONArrayクラスを使用するか、GoogleGSONなどのライブラリを使用してJSONからPOJOを取得できます。

于 2013-02-05T13:51:48.020 に答える
1

GSONを使用することをお勧めします。同じマップ応答を解析するためのデモを作成しました。あなたは完全なデモを見つけることができますhere。また、JSONにあるすべての応答を簡単に解析するために使用できるグローバルGSONパーサークラスを作成しました。

于 2013-02-05T13:53:54.977 に答える