问题描述
我正在关注本文https://quarkus.io/guides/rest-client,以构建一个REST Client来解析restcountries.eu服务的输出。 这里是持有模型的班级:
public class Country {
public String name;
public String alpha2Code;
public String capital;
public List<Currency> currencies;
public static class Currency {
public String code;
public String name;
public String symbol;
}
}
现在,假设我想添加一个自定义字段,例如时间戳,以记录创建此对象时的瞬间。我想,我会继续添加下面的另一个字段:
public class Country {
public String name;
public String alpha2Code;
public String capital;
public List<Currency> currencies;
public Instant timestamp; //<--------- added attribute
[....]
我的问题是:如何告诉客户填写该字段?通常,我会在构造函数中完成此操作。但是,我找不到解释这一部分的文档。
感谢您的帮助
Simone
解决方法
您实际上可以在默认构造函数中执行此操作。 JSONB或Jackson之类的框架期望POJO具有默认的构造函数。他们在创建Country
的实例时会调用它。
使用@JsonbTransient
或 @JsonIgnore
批注将POJO的该属性标记为可忽略,以避免编组人员抱怨响应中找不到的属性。
@Data
public class Country {
private String name;
private String alpha2Code;
private String capital;
private List<Currency> currencies;
@JsonbTransient // if you're using JSONB (default in Quarkus)
@JsonIgnore // if you're using Jackson
private Instant timestamp;
public Country() {
this.timestamp = Instant.now();
}
PS @Data
注释是您应该考虑使用的注释。封装不是一件坏事,但是创建吸气剂/设置器是乏味的。但是Project Lombok在这里肯定有帮助。