Spring 参数类型为List
错误的例子:
该写法有如下异常。正确写法为将List再封装成一个对象。
@PostMapping("/doors")
public Response addDoors(@RequestBody DoorVO[] doors) {
// todo batchAddDoors(Lists.newArrayList(doors));
return new Response(true);
}
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of com.wework.doorservice.core.vo.request.DoorReqVO[] out of START_OBJECT token
at [Source: java.io.PushbackInputStream@333f2c96; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:270)
at com.fasterxml.jackson.databind.DeserializationContext.reportMappingException(DeserializationContext.java:1234)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1122)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1075)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.handleNonArray(ObjectArrayDeserializer.java:275)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:179)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:20)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3798)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2922)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:237)
正确的例子:
@Getter
@Setter
@ToString
public class BatchAddDoorVO {
private List<BatchDoorVO> doors;
}
@PostMapping("/doors")
public Response addDoors(@RequestBody BatchAddDoorVO doors) {
batchAddDoors(doors.getDoors());
return new Response(true);
}