jackson objectMapper 与其他人的区别

Posted

技术标签:

【中文标题】jackson objectMapper 与其他人的区别【英文标题】:Difference between jackson objectMapper to others 【发布时间】:2020-12-15 09:58:05 【问题描述】:

我找不到任何关于 jackson 的 ObjectMapper 与其他映射器(如 dozer/mapStruct/modelMapping/等)之间差异的解释。所有的文章都比较了 dozer/mapStruct/modelMapping 但他们忽略了 ObjectMapper。我不明白出了什么问题?是同一个映射器吗?

【问题讨论】:

【参考方案1】:

Dozer、MapStruct 和 ModelMapping 是 Java Bean to Java Bean 映射器框架,它们以逐个属性、逐个字段的方式递归地将数据从一个对象复制到另一个对象。

另一方面,ObjectMapper 提供读写JSON 的功能,既可以从基本 POJO 读取和写入,也可以从通用JSON Tree Model 读取和写入。 ObjectMapper 具有一些附加功能,例如转换对象(参见 convertValue 方法),但这不是创建此类的主要原因。

所以,如果你想在两个不同的模型之间实现复杂的映射,你应该使用映射器;如果要将模型序列化为JSON 或从JSON 有效负载反序列化模型,则必须使用Jackson 中的ObjectMapper

【讨论】:

【参考方案2】:

Jackson 库 - 主要关注将 Objects/Entities 转换为 JSON 并返回。

ModelMapper/ MapStruct - 关注一个实体到另一个实体的映射,将一个实体映射到它的 DTO。由于不同实体的大小和复杂性,此操作可能会变得相当粗糙,因此我们需要这些库来简化工作。

【讨论】:

以上是关于jackson objectMapper 与其他人的区别的主要内容,如果未能解决你的问题,请参考以下文章

jackson中objectMapper的使用

导入 com.fasterxml.jackson.databind.ObjectMapper 无法解析

带有 Jersey 2.2 和 Jackson 2.1 的自定义 ObjectMapper

Spring boot与Jackson ObjectMapper

ObjectMapper类

Jackson ObjectMapper给出了递归数据类型的错误