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

我有一个代码片段


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 吗?


子衿沉夜
浏览 792回答 1
1回答

繁星点点滴滴

您可以使用通用类 NumberNumber n = jsonObject.get("a");long l = n.getLongValue();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java