如何配置 GraphQL SPQR 以使用 Gson 而不是 Jackson
How to configure GraphQL SPQR to use Gson instead of Jackson
我注意到 GraphQL-SPQR 至少有几个可以配置的属性(例如 graphql.spqr.gui.enabled=true
)。是否有指定对象使用 Gson 而不是 Jackson 的配置 serialization/deserialization?
如果没有配置,是否有其他方法可以使用 Gson 代替 Jackson 来实现 GraphQL-SPQR?
NOTE: I am already using spring.http.converters.preferred-json-mapper=gson
in my application.properties
, to override spring in general to use Gson instead of Jackson, but it doesn't seem to override GraphQL-SPQR's value mapper (defaults to Jackson).
非常感谢任何帮助:)
您需要做的就是注册一个 ValueMapperFactory
bean,例如
@Bean
public ValueMapperFactory gson() {
return new GsonValueMapperFactory();
}
要自定义工厂,请使用构建器而不是构造函数:
@Bean
public ValueMapperFactory gson(Gson gson) {
return GsonValueMapperFactory.builder()
.withPrototype(gson)
.build();
}
您可以找到列出的大多数可定制 bean here。
我也认为尊重 spring.http.converters.preferred-json-mapper
是个好主意。我会在未来的版本中添加它。关注 this issue 获取进展。
请注意,Gson 映射比 Jackson 的映射简单得多。它的功能少得多,只考虑字段(不考虑构造函数参数或设置器),并且可能不会与基于 Jackson 的映射完全相同。但我想您已经意识到这一点,因为您明确希望使用它。
我注意到 GraphQL-SPQR 至少有几个可以配置的属性(例如 graphql.spqr.gui.enabled=true
)。是否有指定对象使用 Gson 而不是 Jackson 的配置 serialization/deserialization?
如果没有配置,是否有其他方法可以使用 Gson 代替 Jackson 来实现 GraphQL-SPQR?
NOTE: I am already using
spring.http.converters.preferred-json-mapper=gson
in myapplication.properties
, to override spring in general to use Gson instead of Jackson, but it doesn't seem to override GraphQL-SPQR's value mapper (defaults to Jackson).
非常感谢任何帮助:)
您需要做的就是注册一个 ValueMapperFactory
bean,例如
@Bean
public ValueMapperFactory gson() {
return new GsonValueMapperFactory();
}
要自定义工厂,请使用构建器而不是构造函数:
@Bean
public ValueMapperFactory gson(Gson gson) {
return GsonValueMapperFactory.builder()
.withPrototype(gson)
.build();
}
您可以找到列出的大多数可定制 bean here。
我也认为尊重 spring.http.converters.preferred-json-mapper
是个好主意。我会在未来的版本中添加它。关注 this issue 获取进展。
请注意,Gson 映射比 Jackson 的映射简单得多。它的功能少得多,只考虑字段(不考虑构造函数参数或设置器),并且可能不会与基于 Jackson 的映射完全相同。但我想您已经意识到这一点,因为您明确希望使用它。