有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

类型子集的java JAXRS自定义@Provider

我有一个具有以下返回类型的API:

class Example {
  private Complex1 complex1;
  private Complex2 complex2;
}

Complex1和Complex2:

class Complex1 {
  private String test1;
  private String test2;
}

class Complex2 {
  private String test3;
  private String test4;
}

现在我想为Complex1使用标准序列化,但为Complex2添加自定义序列化

我试图为Complex2添加一个提供程序。但是JAX-RS似乎没有意识到这一点,因为它不是实际的返回类型。例如,如果我添加一个提供者,JAX-RS就会使用我的自定义提供者。但是有一个自定义的提供者,例如有一个缺点,我也必须为Complex1添加逻辑,尽管标准序列化对于Complex1来说是可以的

在本例中,也可以对Complex1进行序列化,但在我的场景中,Complex1非常庞大,希望避免为Complex1实现序列化逻辑

你有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    所以它不会那样工作。一个JSON提供程序用于整个序列化。它已经知道如何序列化整个对象。Jackson根本无法知道在序列化过程中需要不同的提供者(尤其是因为Jackson甚至不了解提供者,这是JAX-RS的概念)

    但是在Jackson级别,我们可以告诉Jackson如何使用JsonSerializer进行序列化。您可以查看this article来编写自定义序列化程序。一旦你有了serilizer,你就可以用定制的serializer注释Complex2类了

    @JsonSerialize(using = Complex2Serializer.class)
    public class Complex2 {}