【发布时间】:2017-08-08 10:27:21
【问题描述】:
我有巨大的 json 文档和映射到该 json 的适当 jaskson 模型。在某些情况下,由于某些数据不存在,因此无法使用所有对象构建所需的 json 文档。
例如我有以下模型:
class First {
private firstField;
private secondField;
etc...
}
class Second {
private firstField;
private secondField;
etc...
}
class General {
private First first;
private Second second;
etc...
}
并且有可能只填充第一个实例:
在通常情况下,它会像这样被序列化:
{
"first":{
"firstField":"some_value",
"secondField":"some_value"
},
"second":null
}
但我的目标是序列化 General 类,如下所示:
{
"first":{
"firstField":"some_value",
"secondField":"some_value"
},
"second":{
"firstField":"null",
"secondField":"null"
}
}
可以通过在 General 类中进行以下更改来实现这一点,以便默认使用默认构造函数初始化其成员:
class General {
private First first = new First();
private Second second = new Second()
etc...
}
但是这种方法会导致现有模型发生太多变化,我不确定它是否是最好的一种方法。是否可以创建一些自定义序列化程序来自行执行此操作?
根据https://stackoverflow.com/users/1898563/michael建议编辑:
因此,主要思想是创建能够检查实例是否为空的序列化程序,如果为空,它应该能够使用默认构造函数创建新实例,注意:这个序列化程序不应该基于特定的Second 类,它应该适用于任何将被序列化的对象,除了简单类型。
【问题讨论】:
标签: java-8 jackson jackson-modules