如何将 RequestBody 中的嵌套 JSON 转换为实体
How to convert nested JSON in RequestBody to an entity
以下是对我端点的 POST
请求的正文:
{
"availabilityMap":
{
"2021-07-18":["9AM-10AM", "OT"],
"2021-07-19":["9AM-10AM", "OPD"],
.
.
}
}
以下是我的控制器的框架:
@PostMapping(value = "/appointment", consumes = MediaType.APPLICATION_JSON_VALUE,
produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity newAppointment(@RequestBody /* WHAT TO PUT HERE?*/) {
}
如何定义实体以便 @RequestBody
自动转换为实体?这可能吗?
public class RequestVO {
public Map<String, List<String>> availabilityMap;
public Map<String, List<String>> getAvailabilityMap() {
return availabilityMap;
}
public void setAvailabilityMap(Map<String, List<String>> availabilityMap) {
this.availabilityMap = availabilityMap;
}
}
{}
可以表示为对象或映射,[]
可以表示为Collection的实现class。 (常用的有List和Set,也是接口,具体的classes由序号框架指定,也可以使用HashMap等实现classes。)对于{}
,使用对象还是地图取决于字段是否固定。在示例中,availabilityMap
是一个 fixed-name 字段,因此使用了对象。 2021-07-18
是不定日期或者其他class,所以用Map。对于一个对象,如果它的字段是另一个对象,你可能需要写一个新的java class.
一般情况下,我们会为请求和响应准备dto或资源。如果你的请求或者响应是和数据库相关的,应该是dto,否则应该标记为资源,可以使用MapStruct进行自动映射操作。
@Data
public class RequestDto {
public Map<String, List<String>> availabilityMap;
}
以下是对我端点的 POST
请求的正文:
{
"availabilityMap":
{
"2021-07-18":["9AM-10AM", "OT"],
"2021-07-19":["9AM-10AM", "OPD"],
.
.
}
}
以下是我的控制器的框架:
@PostMapping(value = "/appointment", consumes = MediaType.APPLICATION_JSON_VALUE,
produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity newAppointment(@RequestBody /* WHAT TO PUT HERE?*/) {
}
如何定义实体以便 @RequestBody
自动转换为实体?这可能吗?
public class RequestVO {
public Map<String, List<String>> availabilityMap;
public Map<String, List<String>> getAvailabilityMap() {
return availabilityMap;
}
public void setAvailabilityMap(Map<String, List<String>> availabilityMap) {
this.availabilityMap = availabilityMap;
}
}
{}
可以表示为对象或映射,[]
可以表示为Collection的实现class。 (常用的有List和Set,也是接口,具体的classes由序号框架指定,也可以使用HashMap等实现classes。)对于{}
,使用对象还是地图取决于字段是否固定。在示例中,availabilityMap
是一个 fixed-name 字段,因此使用了对象。 2021-07-18
是不定日期或者其他class,所以用Map。对于一个对象,如果它的字段是另一个对象,你可能需要写一个新的java class.
一般情况下,我们会为请求和响应准备dto或资源。如果你的请求或者响应是和数据库相关的,应该是dto,否则应该标记为资源,可以使用MapStruct进行自动映射操作。
@Data
public class RequestDto {
public Map<String, List<String>> availabilityMap;
}