当前位置: 首页 > 知识库问答 >
问题:

如何将Spring WebClient配置为使用Gson而不是Jackson?

呼延光明
2023-03-14

我正在用Spring(无Spring Boot)构建一个Java客户端,并且必须使用Gson。

我如何告诉Spring使用Gson而不是Jackson?

为了澄清,我使用了反应式WebClient:

WebClient wc = WebClient.builder().baseUrl("http://localhost").build();
Pojo myPojo = wc.get.uri("/pojo").retrieve().bodyToMono(Pojo.class).block();

Pojo应该是这样的:

public class Pojo {

    @SerializedName("Id")
    private long id;

    @SerializedName("Value")
    private String value;

    private Pojo() {

    }
}

服务器中的Json是这样的:

{"Id":1,"Value":"some Value"}

共有1个答案

秦俊豪
2023-03-14

你说的"Java客户端"是什么意思?你指的是一个基于HTTP客户端,例如RestTemboard吗?那么就很简单了:

java prettyprint-override">final RestTemplate restTemplate = new RestTemplate(
    Collections.singletonList(new GsonHttpMessageConverter())
);
 类似资料:
  • 我试图使用Gson发送JsonObjects作为响应。这些JsonObjects是手工构造的,而不是使用objectMapper或GSON。我排除了所有与杰克逊有关的依赖关系。它工作得很好很好。后来,我尝试使用SpringFox添加Swagger文档。现在它抛出以下异常:

  • 我花了过去的一天,试图找到一个解决办法,但没有找到任何在线资源,解决了这个问题。 我使用Gson为我的应用程序进行消息转换,它在单元测试之外工作得很好。我甚至添加了bean以优先于Jackson而不是将配置值写入。这只在运行应用程序时起作用。 现在我的问题是,如何使用的Gson序列化/反序列化?我有一个带有批注的类,它的值与实际名称不同。我最接近找到答案的是下面的一个,但没有任何帮助: https

  • 我正在用Java Swing制作一个游戏,其中有一个大POJO用来存储游戏的运行时数据,比如精灵的位置、当前显示的效果等等。我希望能够将其作为JSON保存到一个文件中,然后在以后重新构建。我发现Gson应该就是这么做的,但到目前为止我还没能让它工作。我总是遇到这样一个问题:它无法使嵌套在存储类中的某些变量可访问。 以下是我目前使用Gson的方式: 以下是我当前尝试使用时收到的错误消息: 是我在开头

  • Spring Boot 1.4.2参考声明: Springhttp。转换器。首选json映射器=jackson#用于HTTP消息转换的首选json映射器。设置为“gson”以强制使用gson 我们做到了。 我们为首选json映射器设置了gson 但杰克逊还是被利用了。 最后,在排除了Maven中所有向Jackson指出的可传递依赖项之后,我们设法强制Spring Boot使用Gson。 现在的问题

  • 我正在用Java Swing制作一个游戏,其中有一个大POJO用来存储游戏的运行时数据,比如精灵的位置、当前显示的效果等等。我希望能够将其作为Json保存到一个文件中,然后在以后重新构建。我发现Gson应该就是这么做的,但到目前为止我还没能让它工作。我总是遇到这样一个问题:它无法使嵌套在存储类中的某些变量可访问 以下是我目前使用Gson的方式: 这是当我尝试使用时,我当前收到的错误消息: 是我一开

  • 问题内容: 我的模型包含一个枚举,它由JPA映射到我的mysql数据库上的一列。 mysql具有本机类型,使用起来会更方便。 如何配置JPA以使用这种类型? 问题答案: 没有对枚举AFAIK的内置支持,但是也许您可以尝试以下解决方法(我从未尝试过测试过): 您可以使用EnumType.STRING将值存储为String在数据库中。 但是使用本机ENUM要求您使用@Column批注定义columnD