从 JSON 读取长值时出现 ClassCastException

ClassCastException when reading long value from JSON

我在 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是整数不长虽然我把它保存为long

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

您应该使用 getLong,其中 returns longget 给您 Object

timeCompleted = obj.getLong("TimeCompleted");

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

而不是使用

object.get(YOUR_KEY)

使用

object.getLong(YOUR_KEY)

get() returns ObejctgetLong() returns long