Java - 通过JSONArray循环

时间:2015-04-04 11:59:29

标签: java arrays json

我正在尝试调用URL,然后将URL的结果保存到数据库中。

URL的调用正常,我也可以将结果保存到JSON对象/数组中。

到目前为止,这是我的代码:

JSONParser parser = new JSONParser();

try
{

    // responseString is the answer i get from calling the URL.
    // It's pretty long that's why i don't copy it in here now
    // But you can call this URL to see what the result is:
    // http://www.gw2spidy.com/api/v0.9/json/items/all/1?filter_ids=29169,29185


    Object objToParse = parser.parse(responseString);

    JSONObject jsonObject = (JSONObject) objToParse;

    JSONArray array = (JSONArray) jsonObject.get("results");

    // Until here everything is ok, the results get saved into the array

    JSONObject mJsonObject = new JSONObject();

    for (int i = 0; i < array.length() ; i++)
    {
        mJsonObject = (JSONObject)array.get(i);
        System.out.println(mJsonObject);
    }

}
catch(ParseException pe)
{
    System.out.println("position: " + pe.getPosition());
    System.out.println(pe);     
}

当我尝试运行此操作时,当我尝试循环播放数组时出现错误:

 Exception in thread "main" java.lang.ClassCastException:     org.json.simple.JSONArray cannot be cast to java.lang.CharSequence

我已经搜索了解决方案,但我无法找到或了解导致错误的原因,如果有人可以帮助我,那会很好..

2 个答案:

答案 0 :(得分:1)

好在最后这对我有用:

JSONObject jsonObject = new JSONObject(responseString);
JSONArray array = (JSONArray) jsonObject.get("results");

JSONObject mJsonObject = new JSONObject();

for (int i = 0; i < array.length() ; i++)
{
    mJsonObject = (JSONObject)array.get(i);
    System.out.println(mJsonObject);



}

不得不改变org.json.simple而不是使用org.json并更改了一些行然后它正在工作。

答案 1 :(得分:0)

我宁愿认为使用简单json的实现是错误的。 虽然你没有提到确切的,但你的Exception可能发生的唯一地方就是行

JSONArray array = (JSONArray) jsonObject.get("results");

并且因为在两个实现中都是相同的,所以必须先发生一些事情,导致出现简单json的情况,其中results属性不是JSONArray。可能与parser.parse(...)有关。