我正在创建一个requestModel,并且说一个人没有给我发送一些密钥。
如果该键不存在,那么我想在获得键值的情况下将其设置为null。
我不想调查是否存在密钥。

public class CustomerModel {

  private Optional<String> s3Bucket;

  private Optional<String> docType;


  public String getS3Bucket() {
    if(s3Bucket.isPresent()) {
      return s3Bucket.get();
    } else {
      return null;
    }
  }

  public void setS3Bucket(Optional<String> s3Bucket) {
    this.s3Bucket = s3Bucket;
  }

  public Optional<String> getDocType() {
    return docType;
  }

  public void setDocType(Optional<String> docType) {
    this.docType = docType;
  }

}


我们在任何地方有图书馆吗?
1.如果我得到了密钥,但它不在即将到来的请求json中,则我将从中获取null,并且该密钥存在并且具有value。它将被存储为值。
2.在为s3bucket(getS3Bucket)编写getter时,我不想为每个键值编写它。有没有自动的方法来做到这一点。

我看了很多帖子,但场景不存在。

PS-我是Java新手

最佳答案

我相信Jackson正是您所需要的。而且,如果您使用的是Spring,我想它已经使用了Jackson。

Here您可以找到有关如何完成JSON映射到模型类的一些示例和文档。

如果您需要自定义某些行为,则可以使用@JsonProperty之类的注释(有很多)。

如果模型类中的属性与JSON中的属性具有相同的名称,则很可能不需要提供任何进一步的配置。

这是一个简单的示例:

public class User {
    @JsonProperty("userName")
    private String name;
    private int age;
    // getters and setters
}


如果您有这样的JSON:

{
  "userName" : "Foo Bar",
  "age" : 18
}


除非您需要非常具体的内容,否则杰克逊会为您完成所有的魔术。

如果某些内容不在JSON中,您会得到(假设您收到的JSON不带age)-如果模型类的对象类型和基元的默认值(0,false等)为零,则模型类中的对应属性将为null。我们的案例age为0)。

09-11 18:49