我有以下用于 JSON 对象的 POJO 类:
public class JSONChangeSet {
public JSONChangeSet {
System.out.println("Owner: " + owner);
}
@SerializedName("comment")
private String comment;
@SerializedName("lastUpdatedDate")
private String modifiedDate;
@SerializedName("owner")
private Resource owner;
@SerializedName("modifiedBy")
private Resource modifier;
public String getComment() {
return comment;
}
}
显然这不起作用,因为在调用构造函数时字段所有者尚未分配值。是否有可能在解析 JSON 对象后自动调用方法?
最佳答案
您用 gson 标记了您的问题,但我会推荐您 Jackson library相反,因为我看到了你最后两个问题,看来 gson 对你来说不够灵活。
在 jackson ,你的例子看起来像这样:
public final class JSONChangeSet {
private final String comment;
private final Resource owner;
@JsonCreator
public JSONChangeSet(
@JsonProperty("comment") final Resource owner,
@JsonProperty("comment") final String comment
) {
this.comment = comment;
this.owner = owner;
}
public String getComment() {
return comment;
}
}
通过这个解决方案,您可以拥有不可变的对象,这些对象将由构造函数构建。这对于 DI 模式也有好处。顺便说一句, jackson 的速度快如闪电。
您可能想阅读this question还有。
关于java - 解析JSON对象: Call the constructor after parsing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8445646/