2017-08-28 58 views
0

我是特林找到一個解決方案來獲得緯度和經度爲雙轉換的JSONObject到ArrayList中

JSONArray arr = jsonObject.getJSONArray("hits"); 
for (int i = 0; i < arr.length(); i++) 
{ 
    String geoloc = arr.getJSONObject(i).getString("_geoloc"); 
    Log.d("geoloc"," : " + geoloc); 

} 

所以我得到的是這樣的:geoloc: : {"lat":33.84878,"lng":-5.481698}

我想是這樣的:

double lat = 33.84878; 
double lng = -5.481698; 

我的問題是我怎麼能得到他們任何幫助請。並且謝謝

+0

'String'' geoloc'的值是什麼?你有多個geloc線?因爲如果是的話,你不能有一個UNIQUE lat和lng,或者'arr'的大小可能是1 – azro

+0

@john你使用Java作爲編程語言嗎?請添加您使用的語言標籤。 – reporter

+0

您應該包含輸入JSON的示例。到目前爲止,它看起來像'_geoloc'不應該被解析爲一個字符串,而是作爲一個對象,你可以訪問'lat'和'long'字段。 – Aaron

回答

0

您需要將String geoloc轉換爲JSONObject。

例如:

JSONObject geolocJsonObj = (JSONObject) geoloc; 

後,您可以訪問到緯度:

geolocJsonObj.get("lat") 
0

您可以創建一個類地理定位的和值壓入的是,ArrayList的:

class GeoLocation { 
    private double lat; 
    private double long; 
    GeoLocation(double nLat, double nLong) { this.lat = nLat, this.long = nLong } 
    // ... Getter and Setter methods 
} 

你可以使用parseDouble來從json對象中提取double值,像這樣:

JSONArray arr = jsonObject.getJSONArray("hits"); 
List<GeoLocation> aGeoLocationList = new ArrayList<GeoLocation>(); 
for (int i = 0; i < arr.length(); i++) 
{ 
    double latVal = Double.parseDouble(arr.getJSONObject(i).getString("lat")); 
    double longVal = Double.parseDouble(arr.getJSONObject(i).getString("long")); 
    aGeoLocationList.add(new GeoLocation(latVal, longVal)); 
} 
相關問題