猿问

从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文件的一小部分。


慕容708150
浏览 257回答 1
1回答

UYOU

String word1 = jsonArray.getJSONObject(id1).getString("adjs");变量jsonArray包含一个JSONArray,其中包含字符串,而不是嵌套JSONObject的。你想要的是String word1 = jsonArray.getString(id1);您实际编写的代码期望采用以下形式的JSON:{&nbsp; &nbsp; "description": "A list of English adjectives.",&nbsp; &nbsp; "adjs":&nbsp; &nbsp; [&nbsp; &nbsp; &nbsp; &nbsp; { "adjs": "Aristotelian" },&nbsp; &nbsp; &nbsp; &nbsp; { "adjs": "Arthurian" },&nbsp; &nbsp; &nbsp; &nbsp; ...&nbsp; &nbsp; ]}"adjs"在您的代码中两次提及密钥可能是一个线索:-)
随时随地看视频慕课网APP

相关分类

Java
我要回答