Java Android:org.json.json.typeMismatch

Java Android:org.json.json.typeMismatch,java,android,json,Java,Android,Json,下面有一个方法,就是解析JSON。但是,我遇到了一个错误(您可以从标题中看到),上面写着“org.json.json.typeMismatch” 尝试记录正在获得输出的名称,但运气不佳。我在破解JSON方面没有什么经验(您可能可以从中看出),因此想知道如何着手解决这个问题 private Boolean parse() { try { JSONArray ja=new JSONArray(jsonData); JSONObject jo;

下面有一个方法,就是解析JSON。但是,我遇到了一个错误(您可以从标题中看到),上面写着“org.json.json.typeMismatch”

尝试记录正在获得输出的名称,但运气不佳。我在破解JSON方面没有什么经验(您可能可以从中看出),因此想知道如何着手解决这个问题

private Boolean parse()
{
    try
    {
        JSONArray ja=new JSONArray(jsonData);
        JSONObject jo;

        realms.clear();

        for (int i=0;i<ja.length();i++)
        {

            jo=ja.getJSONObject(i);

                String name = jo.getString("name");
                Log.d("",name);


            //realms.add(name);


        }

        return true;

    } catch (JSONException e) {
        e.printStackTrace();
        return false;
    }
}
(还有更多内容,但我不想全部复制)

不确定我是否没有处理“领域”数组?如果您能在这方面提供帮助,我将不胜感激!因为我不明白为什么会出现不匹配

问候


Jg

您的JSON字符串显示在这里,它是一个JSONObject而不是JSONArray,因此您必须使用此字符串初始化一个JSONObject,然后从以前的JSONObject获得一个名为
realms
的JSONArray。供您参考

您似乎试图达到更高的级别,而不是名称。我从你那里看到,你首先需要访问领域,然后迭代对象,哪些对象包含属性“name”。这很完美。非常感谢您的快速回复!你给我的链接很好地解释了android的JSON。对我来说,执行“String name=jo.optString(“name”).toString();”是一个关键的链接,也是使用realms的JSONArray。再次感谢你,真的很感激
{
"realms": [{
    "type": "pvp",
    "population": "low",
    "queue": false,
    "status": true,
    "name": "Aegwynn",
    "slug": "aegwynn",
    "battlegroup": "Misery",
    "locale": "de_DE",
    "timezone": "Europe/Paris",
    "connected_realms": ["aegwynn"]
}, {
    "type": "pve",
    "population": "low",
    "queue": false,
    "status": true,
    "name": "Aerie Peak",
    "slug": "aerie-peak",
    "battlegroup": "Reckoning / Abrechnung",
    "locale": "en_GB",
    "timezone": "Europe/Paris",
    "connected_realms": ["bronzebeard", "aerie-peak"]
}]