如何在android中获取json数组值?

时间:2013-02-05 13:42:51

标签: android json

JSON响应值看起来像"types" : [ "sublocality", "political" ]。如何获得类型的第一个值或如何获得单词sublocality?

3 个答案:

答案 0 :(得分:14)

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

}

答案 1 :(得分:1)

您应该解析该JSON以获取这些值。您可以在Android中使用JSONObject和JSONArray类,也可以使用Google GSON等库来从JSON获取POJO。

答案 2 :(得分:1)

我会坚持要你使用GSON。我创建了一个解析相同地图响应的演示。您可以找到完整的演示here。我还创建了一个全局GSON解析器类,可以用来轻松解析JSON中的任何响应。