首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从JSON文件中获取随机字符串

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

Stack Overflow用户
提问于 2018-07-10 08:21:32
回答 1查看 389关注 0票数 1

尝试从这个JSON文件中获取一个随机单词

代码语言:javascript
复制
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");
    }
}

这是我正在使用的代码,并且我一直收到这个错误。

代码语言:javascript
复制
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:

代码语言:javascript
复制
{
    "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文件的一小部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-10 08:52:47

代码语言:javascript
复制
String word1 = jsonArray.getJSONObject(id1).getString("adjs");

变量jsonArray包含一个JSONArray,它包含字符串,而不是嵌套的JSONObject

代码语言:javascript
复制
String word1 = jsonArray.getString(id1);

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

代码语言:javascript
复制
{
    "description": "A list of English adjectives.",
    "adjs":
    [
        { "adjs": "Aristotelian" },
        { "adjs": "Arthurian" },
        ...
    ]
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51255645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档