让我们看一下JSON绑定如何处理自定义对象的创建。
本系列的下一篇文章将介绍如何使用适配器自定义JSON-B。
JSON-B期望所有类都具有一个公共的无参数构造函数 ,该构造函数在反序列化过程中用于实例化目标类。 创建实例后,可通过调用适当的setter方法或直接设置公共字段来用JSON文档中的数据填充实例。
但是,有时这还不够,尤其是在构造复杂的情况下,对于这些情况,必须实现自定义构造函数或静态工厂方法。 此代码段显示了自定义构造函数的实现。
public class Magazine {
private String title;
private Author authorName;
@JsonbCreator
public Magazine(@JsonbProperty("bookTitle") String title,
@JsonbProperty("firstName") String firstName,
@JsonbProperty("surname") String lastName) {
this.title = title;
this.authorName = new Author(firstName, lastName);
}
}
您会注意到使用JsonbProperty批注将JSON属性名称映射到构造函数参数列表中的参数,以及构造函数如何使用名字和姓氏来构造Author类的实例。
此JSON文档已成功反序列化为Magazine类。
{
"firstName": "Alex",
"surname": "Theedom",
"bookTitle": "Fun with JSON-B"
}
为了对序列化和反序列化过程进行更高级的自定义,我们需要看一下适配器如何工作,这就是我接下来要做的。
除了我在这些博客文章中讨论的内容之外,关于JSON Binding API还有更多的知识要知道。