0

我正在关注这篇文章https://quarkus.io/guides/rest-client来构建一个 REST 客户端来解析来自 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
       [....]

我的问题是:我如何告诉客户填充该字段?通常,我会在构造函数中完成它。但是,我找不到解释这部分的文档。

谢谢你的帮助

西蒙妮

4

1 回答 1

1

您实际上可以在默认构造函数中执行此操作。JSONB 或 Jackson 等框架希望 POJO 具有默认构造函数。他们会在创建 的实例时调用它Country

使用@JsonbTransient or @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注解是你应该考虑使用的东西。封装不是一件坏事,但创建 getter/setter 是很乏味的。但是龙目岛项目在这里肯定会有所帮助。

于 2020-10-21T08:45:27.453 回答