[英]Using @JsonAlias to Convert into Pojo Using @RequestBody
我有 JSON 架构,如下所示,
{
"prty_id": "hgh",
"customer_id": "ghjghjghj"
}
我有 model class 如下所示
public class PARTY {
@JsonAlias({"prty_id", "prtyId"})
String prtyId;
@JsonAlias({"customer_id", "customerId"})
String customerId;
......
}
当我尝试使用@RequestBody
PARTY 主体作为方法参数使用@RequestBody
注释反序列化时,我得到了POJO class 字段的null 值。
@PostMapping(value="/party/db",produces="application/json",consumes="application/json")
public Party controller(@RequestBody Party body)
//here in body parameter only i am getting null values
{
ObjectMapper obj = new ObjectMapper();
String json = obj.writeValueAsString(body);
System.out.println("===="+json);
PARTY p = obj.readValue(json, PARTY.class);
System.out.println("------"+p);
p.toString();
return p;
}
您需要在 class 中写入吸气剂,以便 jackson 去噪化可以工作。 在您的定义中也更好地使用 CamelCase:
public class Party {
@JsonAlias({"prty_id", "prtyId"})
String prtyId;
@JsonAlias({"customer_id", "customerId"})
String customerId;
public String getPrtyId() {
return prtyId;
}
public String getCustomerId() {
return customerId;
}
}
编辑:添加 controller:
@PostMapping("/test")
public Party test(@RequestBody Party body) {
return body;
}
我建议将@JsonProperty
与@JsonAlias
一起使用。 试试看。
@JsonProperty
@JsonAlias(xxx, xxx)
private String xxx;
就是这样。 乍一看,代码应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.