使用JSON Android解析Google地图位置

时间:2014-07-14 08:47:19

标签: android json google-maps

我有一个json文件存储在我的资产文件夹(map_location.json)中我需要显示从json文件解析的地图标记。这是我的json文件:

{
"Dine": [
    {
        "id": 1,
        "name": "Place Name",
        "address": "Place Address",
        "lat": -33.867,
        "lng":  151.206
    }
]

}

1 个答案:

答案 0 :(得分:0)

首先,您需要使用以下方法从资产中读取JSON文件:

public String loadJSONFile() {
String jsonStr = null;
try {

    InputStream is = getAssets().open("map_location.json");

    int size = is.available();

    byte[] buffer = new byte[size];

    is.read(buffer);

    is.close();

    jsonStr = new String(buffer, "UTF-8");


} catch (IOException ex) {
    ex.printStackTrace();
    return null;
}
return jsonStr;
}

然后使用以下代码读取返回的jSON字符串:

JSONObject obj = new JSONObject(loadJSONFile());
JSONArray m_jArry = obj.getJSONArray("Dine");
ArrayList<Double> latList= new ArrayList<Double>();
ArrayList<Double> lngList= new ArrayList<Double>();
ArrayList<String> nameList= new ArrayList<String>();
ArrayList<String> addressList= new ArrayList<String>();

for (int i = 0; i < m_jArry.length(); i++) 
{
    JSONObject jo_inside = m_jArry.getJSONObject(i);
    String name_value = jo_inside.getString("name");
    String address_value = jo_inside.getString("address");
    double lat_value = jo_inside.getDouble("lat");
    double lng_value = jo_inside.getDouble("lng");
    nameList.add(name_value);
    addressList.add(address_value);
    latList.add(lat_value);
    lngList.add(lng_value);
}