我有 2 个类:A 类包含 B 类。 我需要将 json 解码为 A 类类型 - 但我需要 A 类具有一组反序列化功能,而 B 类具有一组不同的功能。 是否可以? 最好的方法是什么? 谢谢!
最佳答案
实际上,如果您想在每次调用的基础上更改 SerializationFeature
或 DeserializationFeature
,您不希望使用 ObjectMapper
中的方法,而是希望使用构造 ObjectReader
和/或 ObjectWriter
像这样:
static final ObjectMapper mapper = ...; // only create once, acts as factor
// later on
byte[] json = mapper.writer(SerializationFeature.INDENT_OUTPUT)
.without(SerializationFeature. WRAP_EXCEPTIONS)
.writeValueAsBytes(value);
MyType result = mapper.readerFor(MyType.class)
.with(DeserializationFeature.UNWRAP_ROOT_VALUE)
// and more 'with' or 'without' calls
readValue(json);
请注意,虽然 ObjectMapper
的构造非常昂贵,并且实例绝对需要重用,但 ObjectReader
和 ObjectWriter
的构造却很便宜并且意味着在每次读/写的基础上完成。因此,虽然它们可以重用(实例是完全线程安全的、不可变的),但不一定有太多需要。
关于Jackson objectMapper 使用多种配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282611/