2016-06-10 17 views
0

我想解析一个列表中的纬度和另一个列表中的经度。 任何想法如何在android.i中实现这一点,我正在谷歌地图上绘制路线,所以我将需要经纬度和纬度。如何解析jsonobject到两个不同的列表

{ 
     "userData": [ 
     { 
      "Latitude": "28.597782", 
      "Longitude": "77.298256", 
      "IotName": "Bus7821", 
      "createdAt": "2016-06-10T09:23:07.244Z", 
      "updatedAt": "2016-06-10T09:23:07.244Z", 
      "id": "575a86fbaf4d65a333c1a1b6" 
     }, 
     { 
      "Latitude": "28.598390", 
      "Longitude": "77.297952", 
      "IotName": "Bus7821", 
      "createdAt": "2016-06-10T09:24:04.265Z", 
      "updatedAt": "2016-06-10T09:24:04.265Z", 
      "id": "575a8734af4d65a333c1a1b7" 
     }, 
     { 
      "Latitude": "28.598362", 
      "Longitude": "77.297866", 
      "IotName": "Bus7821", 
      "createdAt": "2016-06-10T09:25:03.522Z", 
      "updatedAt": "2016-06-10T09:25:03.522Z", 
      "id": "575a876faf4d65a333c1a1b8" 
     } 
     ] 
    } 

我的代码片段

JSONObject parentObject = new JSONObject(buffer.toString()); 



       routeMap = parentObject.getJSONArray("userData"); 
       for (int i=0 ; i<routeMap.length();i++) 
       { 
        JSONObject routes = routeMap.getJSONObject(i); 
//      routeLatitude = routes.get("Latitude"); 
       } 
+0

使用'routes.getString(“Latitude”);''和'routes.getString(“Longitude”);'为纬度和经度resp。 –

+1

你面临什么问题? – Mohit

回答

0

尝试这样的:

routeMap = parentObject.getJSONArray("userData"); 
         for (int i=0 ; i<routeMap.length();i++) 
         { 
           JSONObject routes = routeMap.getJSONObject(i); 
           routeLatitude = routes.getString("Latitude"); 
           routeLongitude = routes.getString("Longitude"); 
           listOne.add(routeLatitude); 
           listTwo.add(routeLongitude); 
         } 

那么listOne和listTwo是你的两个的ArrayList。

0

试试这个:

try { 
    List<String> lat = new ArrayList<>(); 
    List<String> lon = new ArrayList<>(); 
    JSONObject jsonObject = new JSONObject(yourJson); 
    JSONArray jsonArray = jsonObject.getJSONArray("userData"); 
    for(int i=0;i<jsonArray.length();i++) { 
     JSONObject jsonObject1 = jsonArray.getJSONObject(i); 
     String latitude = jsonObject1.getString("Latitude"); 
     String longitude = jsonObject1.getString("Longitude"); 
     lat.add(latitude); 
     lon.add(longitude); 
    } 
    System.out.print(lat + "" + lon); 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 

一个更好的方法是创建这样一个POJO:

public class MyLocation 
{ 
    private String id; 
    private String updatedAt; 
    private String createdAt; 
    private String IotName; 
    private String Latitude; 
    private String Longitude; 

    //other getters and setters here 

    public String getLatitude() 
    { 
     return Latitude; 
    } 

    public void setLatitude (String Latitude) 
    { 
     this.Latitude = Latitude; 
    } 

    public String getLongitude() 
    { 
     return Longitude; 
    } 

    public void setLongitude (String Longitude) 
    { 
     this.Longitude = Longitude; 
    } 
} 

现在,你可以这样做:

MyLocation ml = new MyLocation(); 
ml.setLatitude(latitude); 
ml.setLongitude(longitude); 

同时获得:

ml.getLatitude(); 
ml.getLongitude(); 
+0

不会使用将两个变量分组在一起的类比独立列表更好吗? –

+1

那会更好,但是我想要两个单独的列表 –

1

Gson图书馆是做到这一点的最佳方式。 根据你的json对象创建一个类。

class UserData { 
    double Latitude 
    double Longitude; 
    String IotName; 
    Date createdAt; 
    Date updatedAt 
    String id; 
} 

现在的GSON一行代码会做所有的工作。

UserData[] allRoutes = new Gson().fromJson(jsonString, UserData[].class); 

希望它能起作用。 :)