ClassCastException将字符串解析为JSONArray

时间:2015-01-05 23:11:40

标签: java android json

我有一个JSON字符串,如下所示,从REST应用程序返回到Android应用程序:

"{ \"error\" : false , \"volume\" : 1000 }"

然后我尝试使用以下内容解析响应(不是确切的函数,但确切的代码导致了问题):

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public void jsonFunction(String result){
    JSONArray jsonArr = (JSONArray) new JSONParser().parse(result);
    JSONObject json = (JSONObject) jsonArr.get(0);
}

但是,每次我尝试解析JSON字符串时,都会收到以下错误:

java.lang.String cannot be cast to org.json.simple.JSONArray
java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONArray

我使用相同的代码来解析来自同一程序中另一个REST应用程序的JSON响应,但是那个执行没有任何问题。如果我尝试直接解析为JSONObject,我会收到一条非常相似的错误消息。我认为必须有一些我没有看到的东西,但对于我的生活,我似乎无法确定它是什么。

编辑:

这是我尝试直接解析为JSON对象的内容:

java.lang.String cannot be cast to org.json.simple.JSONObject
java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject

1 个答案:

答案 0 :(得分:4)

你的json响应不是数组,这就是你需要做的全部。

  import org.json.JSONException;
  import org.json.JSONObject;

  try {
       JSONObject obj = new JSONObject(result);
       boolean error = obj.getBoolean("error");
       int volume = obj.getInt("volume");
  } catch (JSONException e){

  }