java 如何在与端点通信时不包括请求对象中的字段?

xyhw6mcr  于 2023-05-15  发布在  Java
关注(0)|答案(1)|浏览(129)

我有一个POJO UserRequest.java,其中有4个字段,我的用例是我需要将这个POJO作为具有3个字段的请求对象发送到REST Endpoint-1,并作为具有4个字段的另一个请求对象发送到REST Endpoint-2(因为这个需要4个字段作为输入)。

public class UserRequest(){

  private String field1;
  private String field2;
  private String field3;
  private String field4;

}

因此,我想对两个REST端点使用相同的POJO,只在第二个端点中传递“field 4”。我尝试在'field 4'上使用@ JSON Ignore注解,但它在第一个端点中将'field 4'发送为空,但第一个端点失败,因为它根本不需要'field 4'。请建议我如何为两个端点使用相同的POJO。

bvjveswy

bvjveswy1#

您可以将第四个字段声明为Optional。这样,您可以将它传递给两个端点,但不必为Endpoint-1传递field4

public class UserRequest(){

  private String field1;
  private String field2;
  private String field3;
  private Optional<String> field4;

}

另一个选择是来自jackson-databind-nullable的JsonNullable,但我通常更喜欢使用Optional,因为它是标准的java类型。

public class UserRequest(){

 private String field1;
 private String field2;
 private String field3;
 private JsonNullable<String> field4;

}

相关问题