我使用JsonWrite和JsonReader开发了一个安卓应用程序。这是我的Json数组
[StudentListModel{rowId='1', userId='User1', userName='Vijil'}, StudentListModel{rowId='2', userId='User2', userName='Dhas'}] 这是我的密码
private ArrayList<StudentListModel> readUser(JsonReader reader) throws IOException {
String rowId = null;
String userId = null;
String userName = null;
StudentListModel model = null;
ArrayList<StudentListModel> userList = new ArrayList<>();
reader.beginObject();
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("rowId")) {
rowId = reader.nextString();
} else if (name.equals("userId")) {
userId = reader.nextString();
} else if (name.equals("userName")) {
userName = reader.nextString();
} else {
reader.skipValue();
}
model = new StudentListModel(rowId, userId, userName);
}
userList.add(model);
reader.endObject();
return userList;
}上面的代码只返回第二个列表(下面的列表),而不是全部。
StudentListModel{rowId='2', userId='User2', userName='Dhas'}我在循环部分有个错误,请帮我把这个拿出来。
现在我修正了下面的代码:
boolean isRowAdded = false, isIdAdded = false, isNameAdded = false;
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("rowId")) {
rowId = reader.nextString();
isRowAdded = true;
} else if (name.equals("userId")) {
userId = reader.nextString();
isIdAdded = true;
} else if (name.equals("userName")) {
userName = reader.nextString();
isNameAdded = true;
} else {
reader.skipValue();
}
model = new StudentListModel(rowId, userId, userName);
if (isRowAdded && isIdAdded && isNameAdded) {
userList.add(model);
/**
* reset insitial status for next iteration
*/
isRowAdded = false;
isIdAdded = false;
isNameAdded = false;
}
}现在工作正确,但我不知道以后我会面临什么问题吗?
发布于 2017-03-21 10:51:18
解析完所有数组后,将模型添加到用户列表中。因此,您只添加了解析的最后一个值。只需将userList.add(模型)调用移动到循环即可。
发布于 2017-03-21 10:55:02
while (reader.hasNext()) {
String name = reader.nextName();
if (name.equals("rowId")) {
rowId = reader.nextString();
} else if (name.equals("userId")) {
userId = reader.nextString();
} else if (name.equals("userName")) {
userName = reader.nextString();
} else {
reader.skipValue();
}
model = new StudentListModel(rowId, userId, userName);
userList.add(model);
}粘贴此代码
https://stackoverflow.com/questions/42924922
复制相似问题