如何迭代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) 会将名称保存到列表中。