gpt4 book ai didi

java - 如何使用 Jackson 和 Spring 的模块设置对象映射器

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:21 28 4
gpt4 key购买 nike

从这个答案 ( https://stackoverflow.com/a/15605404/650784 ) 我正在尝试设置 Jackson 来处理我的 DTO 中的 Joda 日期时间,但我很难理解 ObjectMapper 代码应该存在的位置。我读过很多关于 ObjectMapper 的不同文章,但它们似乎都在处理旧版本。我可以利用我已经发现的东西并破解它来工作,但我想看看什么被认为是使用 Spring 3.2.2/Jackson 2/Jersey 执行此操作的正确方法。我应该指出,我只想添加 joda 时间映射模块,我不想对 jackson 进行任何其他自定义。我是一个新手,如果这是我刚刚错过的一些简单而明显的答案,请原谅我。

最佳答案

我从未使用过 Spring,但我在使用 RESTeasy 框架时遇到了同样的问题。了解这一点后,我会尝试为您提供一些答案/搜索方向。

要回答您的一个问题,只要您必须处理序列化/反序列化到/来自 json 进程,ObjectMapper“必须存在”。例如:

MyObject myObject = new MyObject();
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(myObject);

正如您提供的链接中所指出的,如果您想向 ObjectMapper 添加模块,则必须在创建映射器后添加以下行:

mapper.registerModule(new AnyModuleYouNeed());

现在,我不是 Spring 用户,但我假设您希望在 spring 提供自己的序列化/反序列化过程时自动执行此过程。

我在网上找到了这个:http://magicmonster.com/kb/prg/java/spring/webmvc/jackson_custom.html

在你的情况下,我认为只有第 2 点和第 3 点对你有用,并且因为你不需要自定义序列化程序,但你只需要向映射器添加一个模块,我认为自定义 ObjectMapper应该是这样的:

@Component
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
registerModule(new AnyModuleYouNeed());
}
}

在我指向您的网站中,他们还谈到了一种为 Spring 3.1 用户注册自定义 ObjectMapper 的优雅方式:http://magicmonster.com/kb/prg/java/spring/webmvc/mvc_spring_config_namespace.html

可能会有用。

最后,请原谅我糟糕的英语,如果您的问题已解决,请告诉我。

关于java - 如何使用 Jackson 和 Spring 的模块设置对象映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com