关于java:将JSON对象放入Arraylist

JSON objects into Arraylist

本问题已经有最佳答案,请猛点这里访问。

该数据是未知数量的JSONobject,我想将NAME,LONGITUDE和LATITUDE这三个数据捕获到Arraylist中。

这是以下代码的结果。

wrapall:[[title1,经度1,纬度1,title2,经度2,纬度2,title3,经度3,纬度3,title4,.......]]

但这是我的期望。

wrapall:[[title1,经度1,纬度1],[title2,经度2,纬度2],[title3,经度3,纬度3],.......]

如何更改这种格式?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private ArrayList<ArrayList<String>> wrapall =new ArrayList<>();
private ArrayList<String> transthree = new ArrayList<>();

private void parserJson(JSONArray jsonArray) {

    try {
        JSONArray array = jsonArray;
        Log.d("jsonarrayishere", array.toString());

        for (int i = 0; i < array.length(); i++) {
            JSONObject object = array.getJSONObject(i);
            String title = object.getString("NAME");
            String longitude = object.get("LONGITUDE").toString();
            String latitude = object.get("LATITUDE").toString();

                transthree.add(title);
                transthree.add(longitude);
                transthree.add(latitude);

        }

        wrapall.add(transthree);
        transthree = new ArrayList<>();

     Log.d("transthree",transthree.toString());

     Log.d("wrapall", wrapall.toString());

    } catch (JSONException e) {
        e.printStackTrace();
        Log.d("objectstestwrong", e.getLocalizedMessage());
    }


}


更好地创建一个POJO类

样本代码

尝试这个

Create a model class like this

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class DataModel
{
    String title;
    String longitude,latitude;

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getLongitude() {
        return longitude;
    }

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

    public String getLatitude() {
        return latitude;
    }

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

比使用这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private ArrayList<DataModel> wrapall = new ArrayList<>();

private void parserJson (JSONArray jsonArray){

    try {
        JSONArray array = jsonArray;
        Log.d("jsonarrayishere", array.toString());

        for (int i = 0; i < array.length(); i++) {
            JSONObject object = array.getJSONObject(i);

            DataModel dataModel = new DataModel();

            dataModel.setTitle(object.getString("NAME"));
            dataModel.setLatitude(object.get("LATITUDE").toString());
            dataModel.setLongitude(object.get("LONGITUDE").toString());

            //Add data model to array list
            wrapall.add(dataModel);
        }
    } catch (JSONException e) {
        e.printStackTrace();
        Log.d("objectstestwrong", e.getLocalizedMessage());
    }
}

使用它从列表中检索数据

1
2
3
4
5
    for (int i=0;i<wrapall.size();i++){
        Log.e("NAME",wrapall.get(i).getTitle());
        Log.e("LONGITUDE",wrapall.get(i).getLongitude());
        Log.e("LATITUDE",wrapall.get(i).getLatitude());
    }


在for循环内创建数组列表的新实例&

还要将该对象添加到for循环内的wrapall arraylist中;

您在循环之外执行了这两项任务,因此输出错误;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        JSONArray array = jsonArray;
    Log.d("jsonarrayishere", array.toString());

    for (int i = 0; i < array.length(); i++) {
        JSONObject object = array.getJSONObject(i);
        String title = object.getString("NAME");
        String longitude = object.get("LONGITUDE").toString();
        String latitude = object.get("LATITUDE").toString();

        transthree.add(title);
        transthree.add(longitude);
        transthree.add(latitude);

        // Here
        wrapall.add(transthree);
        transthree.clear();
    }


创建一个POJO类,添加这三个属性

1
2
3
4
5
6
7
public class TestData{
    private String title;
    private String longitude;
    private String latitude;

    //create constructor and getter, setter
}

创建一个列表List。 将pojo对象添加到列表中。 之后,将列表转换为JSON字符串

1
2
List<TestData> dataList = new ArrayList<>();
dataList.add(new TestData(title, lat, long));

1
2
3
4
5
6
7
8
9
String title="title",longi="longitude",lati="latitude";
 String result="[";
            for(int i=0;i<2;i++){
            result=result+"[";
            result=result+title+","+longi+","+lati;
            result=result+"],";
            }
            result=result+"]";
            Log.d("Your Desired String",result);