【问题标题】:How to configure GraphQL SPQR to use Gson instead of Jackson如何配置 GraphQL SPQR 以使用 Gson 而不是 Jackson
【发布时间】:2020-04-15 02:51:33
【问题描述】:
我注意到 GraphQL-SPQR 至少有几个可以配置的属性(例如 graphql.spqr.gui.enabled=true)。是否有指定使用 Gson 而不是 Jackson 进行对象序列化/反序列化的配置?
如果没有配置,是否有其他方法可以使用 Gson 代替 Jackson 进行 GraphQL-SPQR?
注意:我已经在我的application.properties 中使用spring.http.converters.preferred-json-mapper=gson 来覆盖spring 以使用Gson 而不是Jackson,但它似乎没有覆盖GraphQL-SPQR 的值映射器(默认为Jackson)。
非常感谢任何帮助:)
【问题讨论】:
标签:
java
jackson
gson
graphql-spqr
graphql-spring-boot
【解决方案1】:
您需要做的就是注册一个ValueMapperFactory bean,例如
@Bean
public ValueMapperFactory gson() {
return new GsonValueMapperFactory();
}
要自定义工厂,请使用构建器而不是构造器:
@Bean
public ValueMapperFactory gson(Gson gson) {
return GsonValueMapperFactory.builder()
.withPrototype(gson)
.build();
}
您可以在here 中找到大多数可定制的 bean。
我也认为尊重spring.http.converters.preferred-json-mapper 是个好主意。我会在以后的版本中添加它。关注this issue 了解进展。
请注意,尽管 Gson 映射比 Jackson 的映射简单得多。它的功能少得多,只考虑字段(不是构造函数参数或设置器),并且可能与基于 Jackson 的映射不完全相同。但我想你知道这一点,因为你明确希望使用它。