Java Android:org.json.json.typeMismatch
下面有一个方法,就是解析JSON。但是,我遇到了一个错误(您可以从标题中看到),上面写着“org.json.json.typeMismatch” 尝试记录正在获得输出的名称,但运气不佳。我在破解JSON方面没有什么经验(您可能可以从中看出),因此想知道如何着手解决这个问题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;
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"]
}]