如何配置GraphQL SPQR以使用Gson而不是Jackson

时间:2019-12-23 22:00:42

标签: jackson gson graphql-spqr graphql-spring-boot

我注意到GraphQL-SPQR至少可以配置几个属性(例如graphql.spqr.gui.enabled=true)。是否有用于指定使用Gson而不是Jackson进行对象序列化/反序列化的配置?

如果没有配置,是否还有其他方法可以使用GraphQL-SPQR使用Gson而不是Jackson?

  

注意:我已经在spring.http.converters.preferred-json-mapper=gson中使用application.properties来覆盖一般的spring以使用Gson而不是Jackson,但似乎没有覆盖GraphQL-SPQR的值映射器(默认为杰克逊)。

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分: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的映射完全不同。但是我想您已经意识到了这一点,因为您明确希望使用它。