当前位置: 首页 > 知识库问答 >
问题:

我如何在Spring Boot注册和使用杰克森加力模块?

桂志诚
2023-03-14

我用的是SpringBoot 1.5.9。、Jackson 2.8和Spring框架4.3.13。

我正在尝试注册和使用AfterburnerModel。

根据Spring Boot文档,要配置ObjectMapper,您可以自己定义bean并用@Bean和@Primary对其进行注释。在bean中,您可以注册一个模块。或者,您可以添加一个Jackson2ObjectMapperBuilder类型的bean,通过添加一个模块来定制ObjectMapper。

我尝试了两种方法,在序列化期间,我没有在jackson模块加力燃烧中出现任何断点。我的自定义设置正在被阅读,但似乎被忽略了。

共有1个答案

裘安阳
2023-03-14

默认情况下,Spring MVC < code > mapping Jackson 2 httpmessageconverter 将使用< code > Jackson 2 ObjectMapper builder 创建自己的< code>ObjectMapper。根据Spring Boot文档76.3,定制Jackson对象映射器章节:

任何类型为 com.fasterxml.jackson.databind.Module 的 bean 都会自动注册到自动配置的 Jackson2ObjectMapperBuilder 中,并应用于它创建的任何 ObjectMapper 实例。这提供了一种全局机制,用于在向应用程序添加新功能时贡献自定义模块。

因此,将您的模块注册为bean就足够了:

@Bean
public AfterburnerModule afterburnerModule() {
  return new AfterburnerModule();
}

使用@Configuration类可以实现更详细的设置,以自定义MappingJackson2HttpMessageConverter

@Configuration
public class MyMvcConf extends WebMvcConfigurationSupport {

  protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(myConverter());
    addDefaultHttpMessageConverters(converters);
  }

  @Bean
  public MappingJackson2HttpMessageConverter myConverter() {
    return new MappingJackson2HttpMessageConverter(myObjectMapper())
  }

  @Bean
  public ObjectMapper myObjectMapper() {
    return new ObjectMapper().registerModule(new AfterburnerModule());
  }

}
 类似资料:
  • 问题内容: 我知道如果文件User.json有 我可以像这样构造一个User对象: 但是,如果文件User.json具有以下内容,该如何构造对象列表: ? 问题答案: 多种方式:如果您具有这些的JSON数组,则可以执行以下操作: 或者,如果只是一系列根级别值,则可以执行以下操作: 并遍历值(添加到列表等)

  • 问题内容: 我怎样才能告诉一个类只包括NON_EMPTY和NON_NULL值,使用 抛出重复注释的错误。 问题答案: “空总是被认为是空的”- 杰克逊的网站 因此NON_EMPTY规则涵盖了两种情况。

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A

  • 首先,我不熟悉Jython。我正在寻找一种将python代码集成到Java项目中的方法。因此我正在调查Jython。 我正在尝试将一个 json 字符串转换为 Java 对象 - 在 python 中。 首先,我一直在努力让Jython找到我的java类。由于缺乏更优雅的解决方案,我可以通过简单地执行以下操作来向前迈进: 无论如何。。。 我正在尝试以下操作: 但是,在运行时,我收到以下错误: 我不

  • 我在一个jaxb注释类中有一个方法,当且仅当它使用jersey 1.16编组到JSON时,我想编组一个值,它在下面使用jackson 1.9。我希望使用jaxb的@XmlTransient和jackson的@JsonProperty以这样的方式完成这项工作: …但马歇尔似乎一点也不觉得。没有遇到错误。

  • 问题内容: 一年左右的时间,我读了一篇文章,解释了如何创建基本上是其他注释的容器的注释。这样,如果我在特定用例中始终使用相同的5个批注,则会创建一个包含它们的批注,而改用它。 不幸的是,我再也找不到该文章了,现在真的很想针对我的杰克逊配置进行此操作。 由于我自己找不到任何信息,所以我开始质疑自己的记忆。这可能还是我错了? 编辑 我想要的是这样的: 我的情况是,我有很多序列化用例,可以由具有不同配置