我正在创建一个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)。