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 |
创建一个列表
1 2 | List<TestData> dataList = new ArrayList<>(); dataList.add(new TestData(title, lat, long)); |
1 2 3 4 5 6 7 8 9 |