JSON解析问题Redux

时间:2015-01-22 18:50:01

标签: java android json parsing

过去我在解析我的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

我很抱歉在第一篇文章中遗忘了这一点。

1 个答案:

答案 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();
}