如何迭代json并保存到列表?
How to iterate json and save to list?
我的 json 数组在这样的数组中有多个键...
"information"{
"info": [
{
"name": "Susan",
"address": "101 Blue Street",
},
{
"name": "John",
"address": "203 Red Street",
}
]
}
如果我这样做,获得两个名字都没有问题...
String firstName = firstObject.getJSONArray("info").optJSONObject(0).optString("name");
String secondName = firstObject.getJSONArray("info").optJSONObject(1).optString("name");
但是,不能保证只会返回两个对象,所以我现在正在尝试
循环遍历这些项目并保存到 arraylist 以供进一步处理。
以下是我目前所拥有的。我正在获取名称 (nameString),但它们没有保存到列表中。该列表在下一次迭代时清除。
我做错了什么?
JSONObject firstObject = response.optJSONObject("information");
JSONArray infoArray = firstObject.getJSONArray("info");
String nameString;
String save;
List<String> al = new ArrayList<String>();
List<String> al2 = new ArrayList<>();
for(int index = 0; index < infoArray.length(); index++) {
JSONObject jsonObject = infoArray.getJSONObject(index);
nameString = jsonObject.getString("name");
System.out.println("name: " + nameString);
al = Arrays.asList(nameString);
for(String s: al){
log.info("nameString " + s);
save = s;
al2.add(save);
在每次迭代中,您都从 nameString 创建一个新的 ArrayList。您应该简单地添加到现有列表中:
al.add(nameString);
你已经得到了行中的名字
nameString = jsonObject.getString("name")
无需使用第二个 for 循环。只需将 nameString 对象添加到列表中即可。 al.add(nameString)
会将名称保存到列表中。
我的 json 数组在这样的数组中有多个键...
"information"{
"info": [
{
"name": "Susan",
"address": "101 Blue Street",
},
{
"name": "John",
"address": "203 Red Street",
}
]
}
如果我这样做,获得两个名字都没有问题...
String firstName = firstObject.getJSONArray("info").optJSONObject(0).optString("name");
String secondName = firstObject.getJSONArray("info").optJSONObject(1).optString("name");
但是,不能保证只会返回两个对象,所以我现在正在尝试 循环遍历这些项目并保存到 arraylist 以供进一步处理。
以下是我目前所拥有的。我正在获取名称 (nameString),但它们没有保存到列表中。该列表在下一次迭代时清除。
我做错了什么?
JSONObject firstObject = response.optJSONObject("information");
JSONArray infoArray = firstObject.getJSONArray("info");
String nameString;
String save;
List<String> al = new ArrayList<String>();
List<String> al2 = new ArrayList<>();
for(int index = 0; index < infoArray.length(); index++) {
JSONObject jsonObject = infoArray.getJSONObject(index);
nameString = jsonObject.getString("name");
System.out.println("name: " + nameString);
al = Arrays.asList(nameString);
for(String s: al){
log.info("nameString " + s);
save = s;
al2.add(save);
在每次迭代中,您都从 nameString 创建一个新的 ArrayList。您应该简单地添加到现有列表中:
al.add(nameString);
你已经得到了行中的名字
nameString = jsonObject.getString("name")
无需使用第二个 for 循环。只需将 nameString 对象添加到列表中即可。 al.add(nameString)
会将名称保存到列表中。