我正在java中构建一个rest客户端。我有以下对象模式。
public class Mode {
@JsonProperty("Replicated")
private Optional<Replicated> replicated = Optional.empty();
@JsonProperty("Global")
private Optional<Global> global = Optional.empty();
public Optional<Global> getGlobal() {
return global;
}
public Optional<Replicated> getReplicated() {
return replicated;
}
public void setGlobal(Global global) {
this.global = Optional.ofNullable(global);
}
public void setReplicated(Replicated replicated) {
this.replicated = Optional.ofNullable(replicated);
}
}
这2个字段是Optionals。
此方法适用于GET请求。但我的问题发生在POST请求中。实际上我发送的对象如下:
{ Mode : {Replicated : {present : true} ...
所以我的解决方法如下:
@JsonProperty("Global")
public Global getGlobalForPost() {
if (global.isPresent()) {
return global.get();
}
return null;
}
@JsonProperty("Replicated")
public Replicated getReplicatedForPost() {
if (replicated.isPresent()) {
return replicated.get();
}
return null;
}
你知道一个更好的解决方案吗?也许杰克逊有什么可以解决的问题?
答案 0 :(得分:0)
杰克逊你无法区分可选字段和非可选字段。只需声明POJO中的任何字段即可。如果您的JSON结构中没有字段,那么Jackson将不会调用setter。你可以跟踪POJO中带有标志的setter。