首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制Spring-Boot使用Gson而不是Jackson

强制Spring-Boot使用Gson而不是Jackson
EN

Stack Overflow用户
提问于 2016-11-24 20:24:04
回答 4查看 12.4K关注 0票数 11

Spring-Boot 1.4.2引用权利要求:

HTTP spring.http.converters.preferred-json-mapper=jackson #用于

消息转换的首选JSON映射器。设置为" Gson“以强制使用Gson

我们做到了。

我们为preferred-json-mapper.

  • We设置了
  • 已经添加了gson作为我们项目的依赖项。

但杰克逊还是被利用了。

最后,我们设法强制Spring-Boot在排除了Maven中的所有传递依赖之后使用Gson,这已经向Jackson指出了。

现在的问题是。这是强制Spring-Boot使用Gson而不是Jackson的唯一方法吗?我们真的需要排除杰克逊所指出的所有传递依赖吗?首选-json-mapper设置还不够吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-29 20:11:34

在Spring Boot使用的旧*.xml配置的一部分中,我们使用了<mvc:annotation-driven/>

它导致第二次使用默认转换器创建RequestMappingHandlerAdapter,而不使用GsonHttpMessageConverter。

票数 0
EN

Stack Overflow用户

发布于 2018-01-26 18:43:07

好吧,WebMvcConfigurerAdapter已经被弃用了。从Spring5.0开始,可以这样做:

代码语言:javascript
复制
@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public Gson gson() {
        GsonBuilder b = new GsonBuilder();
        b.registerTypeAdapterFactory(HibernateProxyTypeAdapter.FACTORY);
        b.registerTypeAdapterFactory(DateTypeAdapter.FACTORY);
        b.registerTypeAdapterFactory(TimestampTypeAdapter.FACTORY);
        b.registerTypeAdapterFactory(LocalDateTypeAdapter.FACTORY);
        b.registerTypeAdapterFactory(LocalDateTimeTypeAdapter.FACTORY);
        return b.create();
    }

    @Override
    public void configureMessageConverters(
        List<HttpMessageConverter<?>> converters) {
        StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
        stringConverter.setWriteAcceptCharset(false);
        stringConverter.setSupportedMediaTypes(Collections
            .singletonList(MediaType.TEXT_PLAIN));
        converters.add(stringConverter);
        converters.add(new ByteArrayHttpMessageConverter());
        converters.add(new SourceHttpMessageConverter<>());
        GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter();
        gsonHttpMessageConverter.setGson(gson());
        gsonHttpMessageConverter.setSupportedMediaTypes(Arrays
            .asList(MediaType.APPLICATION_JSON));
        converters.add(gsonHttpMessageConverter);
    }
}
票数 11
EN

Stack Overflow用户

发布于 2019-07-26 23:09:30

F.e.1)添加其他json工件,如果使用maven和名为gson的google json

代码语言:javascript
复制
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${latestGsonVersion}</version>
</dependency>

2)设置

代码语言:javascript
复制
spring.http.converters.preferred-json-mapper=gson

3)例如,在代码中使用它

代码语言:javascript
复制
@Autowired private Gson gson;

还有其他的:杰克逊图书馆,谷歌-Gson图书馆,JSON-lib,Flexjson,json-io,genson,JSONiJ图书馆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40786366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档