数据是未知数量的JSON对象,我想将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],.......]
如何更改这种格式?
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());
}
}
答案 0 :(得分:2)
更好地创建POJO类
示例代码
尝试一下
创建这样的模型类
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;
}
}
比使用此
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());
}
}
使用它从列表中检索数据
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());
}
答案 1 :(得分:1)
创建一个POJO类,添加这三个属性
public class TestData{
private String title;
private String longitude;
private String latitude;
//create constructor and getter, setter
}
创建列表List<YOUR_POJO>
。将pojo对象添加到列表中。之后,将列表转换为JSON字符串
List<TestData> dataList = new ArrayList<>();
dataList.add(new TestData(title, lat, long));
答案 2 :(得分:1)
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();
}
答案 3 :(得分:1)
在for循环内创建数组列表的新实例&
还将该对象添加到for循环内的wrapall arraylist中;
您在循环之外执行了这两项任务,因此输出错误;
答案 4 :(得分:0)
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);