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 与其他人的区别的主要内容,如果未能解决你的问题,请参考以下文章
导入 com.fasterxml.jackson.databind.ObjectMapper 无法解析
带有 Jersey 2.2 和 Jackson 2.1 的自定义 ObjectMapper