Jackson objectMapper 使用多种配置

标签 jackson fasterxml

我有 2 个类:A 类包含 B 类。 我需要将 json 解码为 A 类类型 - 但我需要 A 类具有一组反序列化功能,而 B 类具有一组不同的功能。 是否可以? 最好的方法是什么? 谢谢!

最佳答案

实际上,如果您想在每次调用的基础上更改 SerializationFeatureDeserializationFeature,您不希望使用 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 的构造非常昂贵,并且实例绝对需要重用,但 ObjectReaderObjectWriter 的构造却很便宜并且意味着在每次读/写的基础上完成。因此,虽然它们可以重用(实例是完全线程安全的、不可变的),但不一定有太多需要。

关于Jackson objectMapper 使用多种配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29282611/

相关文章:

java - Jackson - 如何从 JsonNode 获取对象? Jawampa [Web 应用程序消息传递协议(protocol) - 到 Java]

json - @JsonTypeInfo 可以与集合一起使用吗?

java - 通过字段进行 jackson 多态反序列化

java - Jackson ObjectMapper 的日期和时间戳序列化

java - Jersey 忽略自定义 ObjectMapper

Java、Csv 到 json、jackson-dataformat-csv

java 将对象数组列表转换为 POJO

java - Spring MVC/Spring Data 数据获取递归

java - 在 Java 中解析 Json 对象中的动态名称的最佳方法是什么?

spring Rest 动态从序列化中排除对象属性