【发布时间】:2017-09-28 11:29:24
【问题描述】:
考虑到我有这样的模型:
public class Model {
private String master;
private Integer slave;
private String notImportantField1;
private String notImportantField2;
private String notImportantField3;
private String notImportantField4;
private String notImportantField5;
private String notImportantField6;
private String notImportantField7;
private String notImportantField8;
private String notImportantField9;
private String notImportantField10;
private String notImportantField11;
private String notImportantField12;
private String notImportantField13;
private String notImportantField14;
private String notImportantField15;
public void setMaster(String master) {
this.master = master;
};
public String getMaster() {
return master;
};
public void setSlave(Integer slave) {
this.slave = slave;
};
public Integer getSlave() {
return slave;
};
/**
* Similar getters/setters for other fields
*/
}
我想要的是,“从”字段的序列化值应该是不同的类型,具体取决于“主”字段值。例如,有条件:
masterCondition = master.equals("string");
如果“masterCondition”为真,则结果 JSON 为:
{
"master": "master_value",
"slave": "1234567890",
**And all other fields as they are.**
}
如您所见,我们在“slave”字段中有字符串值。 如果“masterCondition”为假,则结果 JSON 为:
{
"master": "master_value",
"slave": 1234567890,
**And all other fields as they are.**
}
如您所见,在第二个响应中,“slave”字段中有整数值。
我尝试使用类级序列化程序,它对我有用,但这些方法会产生大量用于“notImportantFields”和非空检查的样板代码。
我也尝试使用 ContextualSerializer,但如果我在字段级别使用此类序列化程序,似乎无法获取另一个字段的值。 有没有办法在没有样板代码的情况下实现这种行为? 谢谢!
【问题讨论】:
标签: java json serialization jackson