如何解决Jackson with JsonTypeInfo - 使用嵌套地图作为值序列化地图
在 Java 中,我需要序列化一个对象,该对象是 Map
当我将另一个地图(如 Map
代码:
public class App3 {
public static void main(String[] args) throws JsonProcessingException {
Map<String,Object> fields = Map.of(
"Key 1",new Date(),"Key2",Map.of("Key2_1",new Date()),"Key3",List.of(new Date())
);
MyContainer myContainer = new MyContainer(fields);
System.out.println(objectMapper().writeValueAsString(myContainer));
}
public static class MyContainer {
@JsonProperty("fields")
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
private Map<String,Object> fields;
public MyContainer(Map<String,Object> fields) {
this.fields = fields;
}
}
public static ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
objectMapper.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN);
objectMapper.setNodeFactory(JsonNodeFactory.withExactBigDecimals(true));
return objectMapper;
}
}
此代码生成 Json 如下:
{
"fields": {
"Key3": [
"java.util.ImmutableCollections$List12",[
1612354278585
]
],"Key 1": [
"java.util.Date",1612354278585
],"Key2": {
"@class": "java.util.ImmutableCollections$Map1","Key2_1": 1612354278585
}
}
}
如您所见,Key3 和 Key2 缺少“java.util.Date”类型信息,因为它们是来自嵌套映射和嵌套列表的值。
有没有办法将其序列化为 Json,以便为嵌套映射值提供类似于 Key 1 的类型信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。