如何将jsonobject解析为两个不同的列表

时间:2016-06-10 12:39:57

标签: java android json parsing

我想在一个列表中解析纬度,在另一个列表中解析经度。     任何想法如何在android.i中实现这一点我在谷歌地图上画一条路线,所以我将需要lat和lng。

{
      "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");
                }

3 个答案:

答案 0 :(得分:1)

Gson Library是最好的方法。 根据你的json对象创建一个类。

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

现在,一行Gson代码将完成您的所有工作。

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

希望它会奏效。 :)

答案 1 :(得分: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是你的两个数组列表。

答案 2 :(得分:0)

试试这个:

DatePickerDialog

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

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

现在你可以这样做:

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