【发布时间】:2017-07-05 16:45:45
【问题描述】:
我正在用 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);
}
}
这两个字段是可选的。
这种方法适用于 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;
}
你知道更好的解决方案吗,也许杰克逊的东西可以解决问题?
【问题讨论】:
-
是的:不要为您的字段使用 Optionals,并使用 github.com/FasterXML/jackson-modules-java8/tree/master/… 来支持 Optionals。
标签: java json jackson resttemplate