首页 > 解决方案 > 在 android [JAVA] 中的多个 Arraylist 中添加 JSONarrays

问题描述

我想在多个数组列表中添加特定的 JSON 数组。在下面的 JSON 结构中,我只想在多个数组列表中添加 robotsAnswer 数组:

"boot": [
  {
    "where": "STARTS",
    "userSuggestion": [
      "hey",
      "hello"
    ],
    "robotAnswer": [
      "Hello. I am Robot",
      "Hi",
      "How are you?"
    ]
  },
  {
    "where": "CONTAINS",
    "userSuggestion": [
      "how are you"
    ],
    "robotAnswer": [
      "I am well",
      "Im doing fine"
    ]
  }
]

例如我想得到这样的arraylist结果:

[ [Hello. I am Robot, Hi., How are you] , [I am well, Im doing fine] ]

我试过这段代码:

 private final ArrayList<List<String>> robotText = new ArrayList<>();
 private final ArrayList<ArrayList<List<String>>> robotAnswer = new ArrayList<> 
 (Collections.singleton(robotText));


 for (int j = 0; j < arrayBoot.length(); j++) {
 JSONObject data = arrayBoot.getJSONObject(j);
 String where = data.getString("where");
 JSONArray answerArray = data.getJSONArray("userSuggestion");
 JSONArray robotArray = data.getJSONArray("robotAnswer");

 ......///

int arrSize = robotArray.length();
  for (int i = 0; i < arrSize; ++i) {
    String word = robotArray.getString(i);
    List<String> words = new ArrayList<>();
    words.add(word);
    robotText.add(words);
    robotAnswer.add(robotText);
}

通过使用此代码,我得到了我不想要的结果:

[[Hello. I am Robot], [Hi], [How are you?], [im well], [im doing fine]

标签: javaandroidarraysjson

解决方案


您的代码应该如下所示。在 robotsAnswer 列表中,您将获得您的愿望清单。

private final ArrayList<List<String>> robotText = new ArrayList<>();
 private final ArrayList<String> robotAnswer = new ArrayList<> 
 (Collections.singleton(robotText));


 for (int j = 0; j < arrayBoot.length(); j++) {
 JSONObject data = arrayBoot.getJSONObject(j);
 String where = data.getString("where");
 JSONArray answerArray = data.getJSONArray("userSuggestion");
 JSONArray robotArray = data.getJSONArray("robotAnswer");


 String sentence = "";
 int arrSize = robotArray.length();
  for (int i = 0; i < arrSize; ++i) {
    String word = robotArray.getString(i);
    sentence = sentence + word+",";
 
}
  
  robotAnswer.add(sentence);


}

推荐阅读