从 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 long
而 get
给您 Object
timeCompleted = obj.getLong("TimeCompleted");
而且,您也不需要显式转换。
而不是使用
object.get(YOUR_KEY)
使用
object.getLong(YOUR_KEY)
get()
returns Obejct
而 getLong()
returns long
我在 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 long
而 get
给您 Object
timeCompleted = obj.getLong("TimeCompleted");
而且,您也不需要显式转换。
而不是使用
object.get(YOUR_KEY)
使用
object.getLong(YOUR_KEY)
get()
returns Obejct
而 getLong()
returns long