类型子集的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 楼答案
所以它不会那样工作。一个JSON提供程序用于整个序列化。它已经知道如何序列化整个对象。Jackson根本无法知道在序列化过程中需要不同的提供者(尤其是因为Jackson甚至不了解提供者,这是JAX-RS的概念)
但是在Jackson级别,我们可以告诉Jackson如何使用
JsonSerializer
进行序列化。您可以查看this article来编写自定义序列化程序。一旦你有了serilizer,你就可以用定制的serializer注释Complex2
类了