我有一个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
答案 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){
}