一般如果json中的字段和类里的属性相同,则不需要修改,如果不通则可以在类的属性上添加@JsonProperty 或者@JSONField
但是如果JSON数据或者类中属性首字母大写的话,只能使用@JsonProperty,否则注入的值是null
比如
实体类
@Data
public class User extends Base{
@JSONField( name ="Name" )
private String Name;
private List<Phone> phones;
}
接口
@RestController
public class UserController {
private List<User> list= new ArrayList<>();
@PostMapping("/add")
public String add(@RequestBody User user){
list.add(user);
return "ok";
}
@GetMapping("/list")
public List<User> list(){
return list;
}
}
发送的json数据
{
"id":1,
"Name":"jack",
"createTime":"2018-12-14 10:10:11",
"phones":[
{"number":139,
"addr":"中国移动"
},
{"number":139,
"addr":"中国移动"
}
]
}
返回的数据,不但name值是空,而且修改了属性名,Name变成了name;
[
{
"id": 1,
"createTime": "2018-12-14 10:10:11",
"phones": [
{
"number": 139,
"addr": "中国移动"
},
{
"number": 139,
"addr": "中国移动"
}
],
"name": null
}
]
使用JsonProperty
@Data
public class User extends Base{
@JsonProperty( value ="Name" )
private String Name;
private List<Phone> phones;
}
返回结果正常
[
{
"id": 1,
"createTime": "2018-12-14 10:10:11",
"phones": [
{
"number": 139,
"addr": "中国移动"
},
{
"number": 139,
"addr": "中国移动"
}
],
"Name": "jack"
}
]
版权声明:本文为cyy356原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。