过去我在解析我的JSON代码时遇到了问题,而且我几乎拥有它并且丢失了所有代码更改。我在这里把它的内容放到我的JSON(我已经证实它变好了)。它只是解析它......我需要得到全文"字段,我想把它放到一个数组......
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
sb.append(line + "\n");
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag" , "Error converting result " + e.toString());
}
try{
JSONObject rootobject = new JSONObject(result).getJSONObject("query").getJSONObject("results");
} catch (JSONException e){
Log.e("JSON Parser", Log.getStackTraceString(e));
e.printStackTrace();
}
return null;
在此范围内,我认为JSONObject区域不正确。我需要迭代所有的JSON对象,获得"全文"来自所有这些的价值并最终将它们放入数据库中。我正在从这个网站上抽取团队名称。
在我看来,我应该可以使用
String teamname = rootobject.getString("fulltext");
以某种方式。我试过这个,但它根本不起作用。事实上,我收到错误消息"没有全文的价值"当我检查错误日志时。
我知道我在某个地方出了问题,但却无法安置它。我仍然对JSON解析和诸如此类的东西感到困惑,但我决定到达那里。
这是示例JSON(我访问的网址)
的链接http://bit.ly/1JnlSck
我很抱歉在第一篇文章中遗忘了这一点。
答案 0 :(得分:0)
你可能应该做的是重构你的JSON。目前你有这样的......
"results": {
"Team:\"Die Unglaublichen\"": {
"printouts": [],
"fulltext": "Team:\"Die Unglaublichen\"",
"fullurl": "http://wiki.planetkubb.com/wiki/Team:%22Die_Unglaublichen%22",
"namespace": 822,
"exists": true
},
"Team:(Can't Stand) Le Kubb Bricks": {
"printouts": [],
"fulltext": "Team:(Can't Stand) Le Kubb Bricks",
"fullurl": "http://wiki.planetkubb.com/wiki/Team:(Can%27t_Stand)_Le_Kubb_Bricks",
"namespace": 822,
"exists": true
}
}
...其中"结果"是一个包含多个子JSONObjects的JSONObject。如果你可以重做它,那么"结果"是一个包含JSONObjects的JSONArray,就像这样......
"results": [
{
"Team": "Die Unglaublichen",
"printouts": [],
"fulltext": "Team:\"Die Unglaublichen\"",
"fullurl": "http://wiki.planetkubb.com/wiki/Team:%22Die_Unglaublichen%22",
"namespace": 822,
"exists": true
},
{
"Team": "(Can't Stand) Le Kubb Bricks",
"printouts": [],
"fulltext": "Team:(Can't Stand) Le Kubb Bricks",
"fullurl": "http://wiki.planetkubb.com/wiki/Team:(Can%27t_Stand)_Le_Kubb_Bricks",
"namespace": 822,
"exists": true
}
]
...然后你可以遍历"结果" array并获取它的每个JSONObjects以及你想要的任何名称/值:
try {
JSONArray resultsArray = rootObject.getJSONArray("results");
for (int i = 0; i < resultsArray.length(); i++) {
JSONObject teamObject = resultsArray.getJSONObject(i);
String fullText = teamObject.getString("fulltext");
}
} catch (JSONException e) {
e.printStackTrace();
}