从JSON读取long值时出现ClassCastException

时间:2018-02-04 07:51:26

标签: java android json classcastexception

我在我的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是整数不长虽然我保存了很长时间

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

2 个答案:

答案 0 :(得分:0)

您应该使用 getLong ,返回long,而get则会Object

timeCompleted = obj.getLong("TimeCompleted");

并且,您也不需要显式投射。

答案 1 :(得分:0)

而不是使用

  

object.get(YOUR_KEY)

使用

  

object.getLong(YOUR_KEY)

get()返回Obejct,而getLong()返回long。