我正在尝试使用Jackson序列化为JSON的类:
class A {
String someString;
Map<String, Long> someMap;
}
我使用以下代码进行序列化:
mapper.writeValueAsString(a);
其中a是A类的实例。
我得到了这个例外:
com.fasterxml.jackson.databind.JsonMappingException: java.lang.Double cannot be cast to java.lang.Long (through reference chain ... java.util.HashMap)
我尝试过启用不同的默认打字,但这没有帮助。
答案 0 :(得分:1)
这是因为您的地图包含Double
而不是Long
。通常这是忽略警告或使用反射的结果。它很容易重现:
A a = new A();
a.someMap = new HashMap<>();
((Map)a.someMap).put("bar", 1.0);
new ObjectMapper().writeValueAsString(a);
com.fasterxml.jackson.databind.JsonMappingException:java.lang.Double无法强制转换为java.lang.Long(通过引用链:A [“someMap”] - &gt; java.util.HashMap [“bar” ])