如何在JAX-RS中使数据字段可选(不是必需的)?

时间:2019-03-27 12:39:15

标签: java rest java-8 jersey jax-rs

我有一个使用Jersey框架编写的RESTapi。随之而来的是一个POJO类。现在,我需要如何在POJO中使特定字段为可选字段,以便无论该可选字段如何都可以使用api?我希望API在两种情况下都可以使用,即

  1. 如果我也提供该可选参数,
  2. 如果我不给,那它也应该工作。

2 个答案:

答案 0 :(得分:0)

我猜您是指POJO中字段的序列化。由于您尚未说明要使用的杰克逊版本,因此必须使用以下批注之一允许空值:

可以在类或吸气剂上使用:

@JsonInclude(Include.NON_NULL)

如果您使用的是Jackson <2.x,请使用以下命令:

@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)

答案 1 :(得分:0)

Java 8的主要用于方法的返回值,而不是Java类(POJO)的数据属性,如Java SE 8中的Optional中所述:

  

当然,人们会做自己想做的事。但是我们确实有一个明确的   添加此功能时的意图,这不是一般性的   目的也许是某种类型,很多人会喜欢我们   这样做。 我们的目的是为图书馆提供有限的机制   方法返回类型,其中需要一种清晰的方法来表示   “没有结果”,并且对此使用null绝对有可能   导致错误。

     

此处的关键是着重于用作返回类型。 课程是   绝对不打算用作Java Bean的属性。   可见,Optional没有实现Serializable,   这对于广泛使用作为财产的财产通常是必需的   对象。

[学分]:https://blog.joda.org/2014/11/optional-in-java-se-8.html