为了账号安全,请及时绑定邮箱和手机立即绑定

fastjson java.lang.Integer 不能转换为 java.lang.Long

fastjson java.lang.Integer 不能转换为 java.lang.Long

子衿沉夜 2021-10-20 11:30:56
我有一个代码片段Map<String, Object> map = new HashMap<>();map.put("a", new Long(11L));String jsonStr = JSONObject.toJSONString(map);System.out.println("jsonStr : " + jsonStr);JSONObject jsonObject = JSON.parseObject(jsonStr);Long a = (Long) jsonObject.get("a");System.out.println("a : " + a);然后,它抛出异常:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long出于某种原因,我只能使用 jsonObject.get。所以,我必须将代码更改为:Map<String, Object> map = new HashMap<>();map.put("a", new Long(11L));String jsonStr = JSONObject.toJSONString(map);System.out.println("jsonStr : " + jsonStr);JSONObject jsonObject = JSON.parseObject(jsonStr);//  Long a = (Long) jsonObject.get("a");Object a = jsonObject.get("a");Long aa;if (a instanceof Integer) {    aa = Long.valueOf((Integer)a);} else if (a instanceof Long) {    aa = (Long)a;}System.out.println("a : " + aa);我还有其他更好的方法来使用 FastJson 解析 Long 值 11L 吗?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

您可以使用通用类 Number


Number n = jsonObject.get("a");

long l = n.getLongValue();


查看完整回答
反对 回复 2021-10-20
  • 1 回答
  • 0 关注
  • 789 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信