如何找到未命名的 JSON 对象的值? (org.json) (java)

How can I find the value of an unnamed JSON object? (org.json) (java)

[Java 17 使用 org.json 解析库。无法切换到 Gson,因为我在 org.json 中编写了大量代码:/ ]

您好! 我在 Java 中使用 API 和 org.json JSON 解析库。我需要获取数组中未命名的 JSON 对象的值。

{
  "lorem": [
   { // this object needs to be retrieved
     "ipsum":"dolor",
     "sit":"amet",
     "consectetur":"adipiscing"
   },
   { // this object also needs to be retrieved
     "ipsum":"dolor",
     "sit":"amet",
     "consectetur":"adipiscing"
   },
   { // this object needs to be retrieved
     "ipsum":"dolor",
     "sit":"amet",
     "consectetur":"adipiscing"
   }
  ]
}

请注意,整个 JSON 文件不是数组,JSON 对象中只有一个 JSON 数组。我怎样才能获得数组中所有这些未命名字段的值?

在此先感谢您的帮助,如果之前有人问过这个问题,我也很抱歉,当我在 Whosebug 上搜索时,我找不到任何关于它的信息。

这些对象并不是真正的未命名对象,它们是 JSON 数组的一部分。因为它们包含在一个数组中,所以我们可以遍历该数组,我们可以通过索引检索每个对象。

假设我们从文件中读取了上面提供的json:

public static void main(String[] args) throws FileNotFoundException {
    String resourceName = "src/main/resources/input.json";
    InputStream inputStream = new FileInputStream(resourceName);

    JSONTokener jsonTokener = new JSONTokener(inputStream);
    JSONObject jsonObject = new JSONObject(jsonTokener);

    // Get the array named lorem from the main object
    JSONArray jsonArray = jsonObject.getJSONArray("lorem");

    // Iterate through the array and get every element by index
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject object = jsonArray.getJSONObject(i);
        System.out.println("ipsum:" + object.get("ipsum"));
        System.out.println("sit:" + object.get("sit"));
        System.out.println("consectetur:" + object.get("consectetur"));
    }
}

此外,JSONObject 有一个 toList 方法,其中 returns 一个 List<Object>