gpt4 book ai didi

json - 在 Spring Boot 项目中启用 Multimap 的 json 序列化

转载 作者:行者123 更新时间:2023-12-02 19:17:25 25 4
gpt4 key购买 nike

我想在 Spring Boot 应用程序中序列化一些 google guava Multimap。

public class SomeDTO {
@JsonProperty
Multimap<A, B> prop = HashMultimap.create();
}

如果不使用自定义的 jackson 序列化器,我会得到一些结果,例如

{
   "prop ":
   {
       "empty": false
   }
}

这绝对不是我想要得到的。我想到了这样的事情:

{
"nodes": {
"key0": [
{
"prop0": 2,
"prop1": 4
},
{
"prop0": 5,
"prop1": 6
}
],
"key1": [
{
"prop0": 23,
"prop1": 0
}
]
}
}

添加

        <dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-guava</artifactId>
<version>${jackson.version}</version>
</dependency>

到 pom.xml 似乎还不够......但是,我只是从整个 spring//关键宇宙开始,所以我想我错过了一些明显的东西。

最佳答案

我想出的解决方案只是将一个@Bean添加到我的主@Configuration中:

import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
// More-obvious imports missing

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}

@Override
protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(Application.class);
}

@Bean
ObjectMapper customizeJacksonConfiguration() {
ObjectMapper om = new ObjectMapper();
om.registerModule(new GuavaModule());
return om;
}
}

Afaik,ObjectMapper Bean 方法有一个缺点:每次以这种方式创建 ObjectMapper 时,所有先前的配置都会被丢弃。

如果您想向 jackson 添加模块 - 而不是覆盖以前的配置,这种方法更好:

import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.datatype.guava.GuavaModule;
// More-obvious imports missing

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {

public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}

@Override
protected final SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
return application.sources(Application.class);
}

@Bean
public Module guavaModule() {
return new GuavaModule();
}
}

关于json - 在 Spring Boot 项目中启用 Multimap 的 json 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30893215/

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