У меня есть фрагмент кода
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);
Есть ли у меня какой-либо другой лучший способ для анализа значения Long 11L с FastJson?