【问题标题】:String cannot be cast to org.JSONObject字符串不能转换为 org.JSONObject
【发布时间】:2014-12-29 07:30:04
【问题描述】:

我有这段正在运行的代码,现在突然抛出一个 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 对象 = (JSONObject) 新 JSONTokener(JSONResponse).nextValue();

但是,在 http://developer.android.com/reference/org/json/JSONTokener.html 的类概述中作为示例传递了一个字符串

【问题讨论】:

    标签: java android json


    【解决方案1】:

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

    来自 Javadoc:

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

    所以,你不能假设它是JSONObject

    所以,要获得正确的值,只需使用:

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

    【讨论】:

    • 你是正确的 wassgren。谢谢回复。由于调用方法的 URL 格式错误,HttpResponse 响应为空。
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多