2017-08-28 96 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)); 
} 
相关问题