字符串无法强制转换为org.JSONObject

时间:2014-12-28 23:09:05

标签: java android json

我有这段代码正在运行,突然间现在抛出一个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

中的类概述中作为示例传递

1 个答案:

答案 0 :(得分:0)

嗯,这是返回值。 nextValue方法不会返回JSONObject。在这种情况下,它会返回String

来自Javadoc:

  

Object nextValue() - 返回输入的下一个值。

因此,您无法假设它是JSONObject

因此,要获得正确的值,只需使用:

String val = (String) new JSONTokener(JSONResponse).nextValue();