【发布时间】:2015-10-18 09:31:30
【问题描述】:
假设我有一个 Common Employee dto,如下所示
public class Employee {
@JsonProperty("name")
public String name;
@JsonProperty("departments")
public List<Department> departments;
@JsonProperty("designation")
public String designation;
//setters and getters
}
Employee dto 可用于员工和经理。我正在使用一个外部 REST 服务,我将从那里获得员工和经理的详细信息。对于员工,传入的 json 将不包含字段部门,但对于经理,传入的 json 将包含一个额外的部门字段。员工和经理传入的json如下图所示
员工 json
{
"name": "Vineeth",
"designation": "Developer"
}
经理 json
{
"name": "Rohit",
"designation": "Manager",
"departments": ["Dept1", "Dept2", "Dept3"]
}
解组工作正常,但问题是当我再次为员工编组回 json 时,我会变成这样
{
"name": "Vineeth",
"designation": "Developer",
"departments": null
}
如果在编组 dto like 期间字段不存在,谁能告诉我如何忽略或删除字段
对于Staff,编组后应该如下所示
{
"name": "Vineeth",
"designation": "Developer"
}
对于经理来说,它应该如下所示在编组之后
{
"name": "Rohit",
"designation": "Manager",
"departments": ["Dept1", "Dept2", "Dept3"]
}
【问题讨论】:
-
除了下面的答案之外,在设计类时尝试考虑封装 - 你不想让成员变量
public,让它们成为“私有”(或者protected,如果你实现我的子类化建议) - 你想保护你的类不被其他类不正确地改变它们的状态。
标签: java json jackson marshalling unmarshalling