java - 从 JSON 文件中获取随机字符串

标签 java json

尝试从此 JSON 文件中获取随机单词

public class Main {
    public static void main(String[] args) {
        JSONObject obj = JSONUtils.getJSONObjectFromFile("/adjs.json");

        JSONArray jsonArray = obj.getJSONArray("adjs");

        for(int i = 0; i < jsonArray.length(); i++) {
            System.out.println(jsonArray.get(i));
        }

        Random r = new Random();
        int id1 = r.nextInt(jsonArray.length());
        String word1 = jsonArray.getJSONObject(id1).getString("adjs");
        System.out.println(word1);
        //String word = jsonArray.getJSONObject(r.nextInt(jsonArray.length())).getString("adjs");
    }
}

我正在使用代码,但我不断收到此错误。

Exception in thread "main" org.json.JSONException: JSONArray[671] is not a JSONObject.
    at org.json.JSONArray.getJSONObject(JSONArray.java:428)
    at Job.Main.main(Main.java:23)

我怎样才能实现它?

下面是我正在使用的 JSON:

{
    "description": "A list of English adjectives.",
    "adjs":
    [ 
        "Aristotelian",
        "Arthurian",
        "Bohemian",
        "Brethren",
        "Mosaic",
        "Oceanic",
        "Proctor",
        "Terran",
        "Tudor",
        "abroad",
        "absorbing",
        "abstract",
        "academic",
        "accelerated",
        "accented",
        "accountant",
        "acquainted",
        "acute",
        "addicting",
        "addictive",
        "adjustable",
        "admired",
        "adult",
        "adverse",
        "advised"
    ]
}

寻找解决方法。哦,是的,只是 JSON 文件的一小部分。

最佳答案

String word1 = jsonArray.getJSONObject(id1).getString("adjs");

变量jsonArray包含一个JSONArray,其中包含字符串,而不是嵌套的JSONObject。你想要的是

String word1 = jsonArray.getString(id1);

您实际编写的代码需要以下形式的 JSON:

{
    "description": "A list of English adjectives.",
    "adjs":
    [
        { "adjs": "Aristotelian" },
        { "adjs": "Arthurian" },
        ...
    ]
}

在代码中两次提及关键的 "adjs" 可能是一个线索:-)

关于java - 从 JSON 文件中获取随机字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51255645/

相关文章:

javascript - 从数组对象获取值

javascript - 在对象内临时包装具有相同类型的数组项

java - 在 MySQL 中检索名称

java - Jackson 将 ISO8601 格式的日期时间反序列化为 Java8 Instant

java - 阅读下面的 xml 的简单且最佳的方法是什么?

java - Eclipse 终端(TM-Terminals)问题 - java 无法识别

java - 使用 Jersey 与 Java 进行 REST

ruby-on-rails - 向 ActiveRecord 对象添加附加数据

ruby-on-rails - rails : How to inspect a response created with 'render json:' ?

c# - 如何从 url 中检索 Json 作为字符串?