[英]Same User dto but with different JsonProperty for two services
我有两个Spring Rest服务的create-employee和create-staff ,如下所示
创造雇员
@RequestMapping(value="/create-employee", method = RequestMethod.POST, consumes = "application/json")
public ResponseEntity<Void> createEmployee(final @RequestBody User user) {
try {
// employee createion logic
} catch (Exception exception) {
log.error("Exception in createEmployee:"+exception.getMessage());
return new ResponseEntity<>(HttpStatus.FORBIDDEN);
}
}
创建员工
@RequestMapping(value="/create-staff", method = RequestMethod.POST, consumes = "application/json")
public ResponseEntity<Void> createStaff(final @RequestBody User user) {
try {
// staff creation logic
} catch (Exception exception) {
log.error("Exception in createStaff:"+exception.getMessage());
return new ResponseEntity<>(HttpStatus.FORBIDDEN);
}
}
对于这两种服务,我都使用名为User
的dto,如下所示:
public class User {
@JsonProperty("employeeName")
private String name;
@JsonProperty("age")
private Integer age;
@JsonProperty("managerName")
private String headName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHeadName() {
return headName;
}
public void setHeadName(String headName) {
this.headName = headName;
}
}
现在的问题是,对于create-employee和create-staff,因为我使用User.java作为请求正文。 发布的json主体看起来像这样
{
"employeeName" : "string",
"age" : "integer",
"managerName" : "string"
}
但实际上我想要的是对于create-staff服务,我希望拥有json主体,如下所示
{
"staffName" : "string",
"age" : "integer",
"managerName" : "string"
}
和create-staff服务,我想拥有json主体,如下所示
{
"employeeName" : "string",
"age" : "integer",
"managerName" : "string"
}
但是对于这两个服务,我需要对两个服务使用相同的User.java dto,但使用不同的JsonProperty
有人可以帮我吗
杰克逊还支持JsonAlias
,这可能对您有所帮助,只需确保将jacskon映射器更新为2.9.1
版即可。
public class User {
@JsonAlias({"employeeName","staffName"})
private String name;
@JsonProperty("age")
private Integer age;
@JsonProperty("managerName")
private String headName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getHeadName() {
return headName;
}
public void setHeadName(String headName) {
this.headName = headName;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.