【发布时间】:2020-08-01 21:17:54
【问题描述】:
我正在使用 JAX-RS (Jersey) 和 Jackson 创建一个 Rest API 来处理 JSON 对象。我想让用户通过查看带有子主体的帖子请求来创建品牌对象,该子主体仅填写了品牌 POJO 的某些字段。
这是我的品牌实体:
@Data
@Entity
@NoArgsConstructor
public class Brand {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private int founded;
private String founder;
private String ceo;
private String headQuarters;
private Date created;
private Date updated;
@Transient
private List<Link> links = new ArrayList<>();
public Brand(String name){
this.name = name;
}
public void addLink(String href, String rel, String action){
Link link = new Link(href, rel, action);
links.add(link);
}
@PrePersist
protected void onCreate() {
created = new Date();
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
}
如果用户将发送以下 JSON 正文:
{
name:"brand-name",
founded:1974
}
我想要一个只有这两个值的新 Brand 对象,created 和要设置的 id,其余的应该为 null。当 JSON 解组时,我有没有办法用这些值创建一个新对象?还是我必须将它作为 JsonObject 接收,然后检查指定了哪些值,然后用它们创建一个新对象?
【问题讨论】: