【发布时间】:2020-06-16 13:33:29
【问题描述】:
当我序列化HashMap 时,我可以保留类型信息,以便我可以将其反序列化为相应的类型,但这在序列化com.google.common.collect.ImmutableMap 时不起作用。如何保留类型信息?
public class ImmutableMapJacksonTest {
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper()
.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
Map<String, String> map = new HashMap<>();
map.put("k1", "v1");
map.put("k2", "v2");
// ["java.util.HashMap",{"k1":"v1","k2":"v2"}]
// preserve type info
System.out.println(objectMapper.writeValueAsString(map));
ImmutableMap<String, String> immutableMap = ImmutableMap.of("k1", "v1", "k2", "v2");
// {"k1":"v1","k2":"v2"}
// miss type info
System.out.println(objectMapper.writeValueAsString(immutableMap));
}
}
【问题讨论】:
-
我终于使用this approach,使用
HashMap作为中介序列化和反序列化ImmutableMap实例。
标签: java serialization jackson guava