我有这段代码正在运行,突然间现在抛出一个Cast异常。有没有人经历类似的事情?感谢。
@Override
public List<RecordJSONclass> handleResponse(HttpResponse response)
throws IOException {
List<RecordJSONclass> result = new ArrayList<RecordJSONclass>();
String JSONResponse = new BasicResponseHandler().handleResponse(response);
try {
JSONObject object = (JSONObject) new JSONTokener(JSONResponse).nextValue();
JSONObject earthquakes = object.getJSONObject("data");
JSONArray temp = earthquakes.getJSONArray("temperature");
JSONArray prob = earthquakes.getJSONArray("pop");
投掷
java.lang.ClassCastException:java.lang.String无法强制转换为 org.json.JSONObject 在myxmlparser.ResponseHandlerJSON.handleResponse(ResponseHandlerJSON.java:22)
异常发生在
行JSONObject object =(JSONObject)new JSONTokener(JSONResponse).nextValue();
然而,String在http://developer.android.com/reference/org/json/JSONTokener.html
中的类概述中作为示例传递答案 0 :(得分:0)
嗯,这是返回值。 nextValue
方法不会返回JSONObject
。在这种情况下,它会返回String
。
来自Javadoc:
Object nextValue() - 返回输入的下一个值。
因此,您无法假设它是JSONObject
。
因此,要获得正确的值,只需使用:
String val = (String) new JSONTokener(JSONResponse).nextValue();