java - 解析JSON对象: Call the constructor after parsing?

标签 java json gson

我有以下用于 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/

相关文章:

mysql - 从 sphinx db 到有点复杂的 golang 结构的最佳实践

java - 特殊字符破坏Json

java - Java中的Gson Json解析

java - 为什么矩形跳跃的高度会变化?

java - 子窗口出现在主窗口的背景中?

json - Angular 2 表单序列化为 JSON 格式

javascript - 将json对象从一个js文件传递到另一个js文件

java - Gson 将 List<String> 反序列化为 realmList<RealmString>

java - Rainbow HAT Android 事物温度偏移

java - 在linux-Fedora core上编译JNI程序?