类似这种参数的请求,该怎么用dto接收?
{
"Data":{
"mobile":"1222222223",
"code":202,
"name":"2222"
}
}
请问接口的DTO该如何定义?
================分割线===================
DTO定义如下
@Data
public class CallbackDTO {
private DataInfo Data;
@Data
public class DataInfo {
private String mobile;
private Integer code;
private String name;
}
}
报错如下
"timestamp": 1592473738332,
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: Unrecognized field \"Data\" (class com.xx.xx.modules.blockchain.dto.CallbackDTO), not marked as ignorable; nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field \"Data\" (class com.xx.xx.modules.blockchain.dto.CallbackDTO), not marked as ignorable (one known property: \"data\"])\n at [Source: (PushbackInputStream); line: 2, column: 10] (through reference chain: com.xx.xx.modules.blockchain.dto.CallbackDTO[\"Data\"])",
================分割线===================
当请求参数为
{
"Data":{
"mobile":"1222222223",
"code":202,
"name":"2222"
}
}
时会报如上错误。
当请求参数为
{
"data":{
"mobile":"1222222223",
"code":202,
"name":"2222"
}
}
时(Data首字母大小写不一样),不会报错,请问代码该如何改动?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
java中json转对象首字母大写的会默认改成小写,可能是为了java的编写规范。
全大写、首字母小写、全部小写的字段在装json字符串的时候都没有发生变化,而首字母大写的默认改成了小写。
两种方法解决:
(注意:如果是方法1需要在对应 的字段上的get set方法需要添加 @JsonIgnore 要不然无效)
2.方法二相对简单点 @JsonProperty(value = "SName") value的值就是你要的字段名