【问题标题】:ClassCastException when reading long value from JSON从 JSON 读取长值时出现 ClassCastException
【发布时间】:2018-02-04 07:51:25
【问题描述】:

我在我的 Android 应用程序中使用 JSON。当我尝试执行以下操作时:

long timeCompleted =0;
 JSONObject obj = new JSONObject();
        try {
            obj.put("TimeCompleted", timeCompleted);
        } catch (JSONException e) {
            e.printStackTrace();
        }

值保存得很好。

但是当我这样做时

try {
            JSONObject obj = new JSONObject(jsn);
            timeCompleted = (long)obj.get("TimeCompleted");
        } catch (JSONException e) {
            e.printStackTrace();
        }

我收到以下错误

Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

因为它认为 0 是不长的整数,虽然我保存它很长

为什么会这样,我该如何解决?

【问题讨论】:

    标签: java android json classcastexception


    【解决方案1】:

    而不是使用

    object.get(YOUR_KEY)
    

    使用

    object.getLong(YOUR_KEY)
    

    get() 返回ObejctgetLong() 返回long

    【讨论】:

      【解决方案2】:

      你应该使用getLong,它返回long,而get给你Object

      timeCompleted = obj.getLong("TimeCompleted");
      

      而且,您也不需要显式转换。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-07
        • 2017-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多