【发布时间】:2020-12-16 21:30:08
【问题描述】:
如何让我的 RequestBody 接受一个模型,该模型可能包含也可能不包含对象字段?
这是我调用的 Restcontroller 端点
@PatchMapping(value = "/projects/update/{projectNumber}")
public ResponseEntity<Object> updateProject(@PathVariable int projectNumber, @RequestBody RequestReviewUpdate rru)
{
return reviewUpdateService.updateReview(projectNumber, rru);
}
这是@RequestBody 正在接受的模型
public class RequestReviewUpdate
{
private UpdateProject project;
private List<UpdateHlsd> reviews;
private List<UpdateProjectLeadership> stakeHolders;
public UpdateProject getProject()
{
return project;
}
public List<UpdateHlsd> getReviews()
{
return reviews;
}
public List<UpdateProjectLeadership> getStakeHolders()
{
return stakeHolders;
}
}
我希望能够发送一个 JSON 可以包含所有对象字段,或者一些。
我的 JSON 正文可能看起来像这样......
{
"project": {
"type": "HLSD"
},
"reviews": [
{
"id": 570,
"requestedBy": "Name here",
"notes":"test"
}
],
"stakeHolders": [
{
"id": 1088,
"projectResource": "sid"
}
]
}
或者这个……等等
{
"reviews": [
{
"id": 570,
"requestedBy": "name",
"notes":"test"
}
}
或任何其他可能的组合。
【问题讨论】:
-
如果您只发送
JSON有效负载中的一些属性,则只有这些属性将在RequestReviewUpdate类中设置。默认情况下,JSON有效负载中不可用的其他属性将设置为null。在第二种情况下,stakeHolders列表和project对象将设置为null。reviews列表将设置为一个元素列表。默认情况下它应该以这种方式工作。您遇到过任何问题吗?
标签: java json spring-boot spring-restcontroller