Java 使用Jackson将具有HashMap的对象序列化为JSON时发生映射异常
我尝试使用Jackson将一个类序列化为JSON:Java 使用Jackson将具有HashMap的对象序列化为JSON时发生映射异常,java,serialization,jackson,Java,Serialization,Jackson,我尝试使用Jackson将一个类序列化为JSON: class A { String someString; Map<String, Long> someMap; } 其中a是类a的实例 我得到一个例外: com.fasterxml.jackson.databind.JsonMappingException: java.lang.Double cannot be cast to java.lang.Long (through reference chain ...
class A {
String someString;
Map<String, Long> someMap;
}
其中a是类a的实例
我得到一个例外:
com.fasterxml.jackson.databind.JsonMappingException: java.lang.Double cannot be cast to java.lang.Long (through reference chain ... java.util.HashMap)
我尝试过启用不同的默认键入,但没有帮助。之所以会出现这种情况,是因为您的映射包含双精度而不是长精度。通常这是忽略警告或使用反射的结果。复制起来相当容易:
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]->java.util.HashMap[bar]
我想你的虫子在别处。地图在哪里?
A a = new A();
a.someMap = new HashMap<>();
((Map)a.someMap).put("bar", 1.0);
new ObjectMapper().writeValueAsString(a);