【问题标题】:getting JSONObjects from JSONArray within a JSONArray从 JSONArray 中的 JSONArray 获取 JSONObjects
【发布时间】:2015-11-26 23:39:52
【问题描述】:

我是 java 的 json 新手,我的 json 看起来像这样:

[{
    "color": red,
    "numbers": [
        "8967",
        "3175",
        "1767"
    ],
}, {
    "color": blue,
    "numbers": [
        "1571",
        "5462",
        "54"
    ]
}] 

以及尝试提取颜色和数字的代码:

while(i<jsonArray.size()){
JSONObject object = (JSONObject) jsonArray.get(i);
colors = object.get("color");
numbers.add(object.get("numbers");

颜色提取得很好,但我的问题是我试图提取数字并将它们 1 逐 1 放置在数组中,而不是像这样放置它们:

numbers[0]="8967"
numbers[1]="3175"

他们的位置是这样的:

numbers[0]={"8967","3175","1767"}

我怎样才能让它们像上面那样一个一个地放置?

【问题讨论】:

    标签: java arrays json


    【解决方案1】:

    您要求输入 numbers 字段,它是一个 JSON 数组,因此它将 JSON 数组添加到 forst 单元格。 尝试遍历“数字”数组的值。 或者 不确定 - 尝试使用 addAll 方法而不是 add。

    【讨论】:

      【解决方案2】:

      您可以尝试使用此代码:

      import org.json.simple.JSONArray;
      import org.json.simple.JSONObject;
      import org.json.simple.parser.JSONParser;
      import org.json.simple.parser.ParseException;
      
      import java.io.BufferedReader;
      import java.io.FileReader;
      import java.io.IOException;
      import java.util.ArrayList;
      import java.util.HashMap;
      import java.util.List;
      import java.util.Map;
      
      public class JSONParserExample {
      
          public static void main(String[] args) {
              JSONArray jsonArray = null;
              try (BufferedReader input = new BufferedReader(new FileReader("src/main/resources/example.json"))) {
                  JSONParser parser = new JSONParser();
                  jsonArray = (JSONArray) parser.parse(input);
              } catch (IOException | ParseException e) {
                  System.out.println("Failed to load properties from file.");
              }
      
      
              Map<String, List<String>> values = new HashMap<>();
              for (Object obj : jsonArray) {
                  JSONObject jsonObj = (JSONObject) obj;
      
                  String color = (String) jsonObj.get("color");
                  JSONArray numbersJSON = (JSONArray) jsonObj.get("numbers");
      
                  List<String> numbers = new ArrayList<>();
                  for (Object o : numbersJSON) {
                      numbers.add((String) o);
                  }
                  values.put(color, numbers);
              }
      
              for (Map.Entry<String, List<String>> entry : values.entrySet()) {
                  System.out.printf("[Key, Value]: %s, %s \n", entry.getKey(),  entry.getValue());
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        • 2014-05-06
        相关资源
        最近更新 更多