本来是前端要传多个相同属性的对象,比如:
{
“deliveryDTO”: [{
“nodeName”: “签到”,
“isDefined”: 2,
“isNeed”: 0,
“isFinish”: 1,
“childNode”: null
},
{
“nodeName”: “交房必备”,
“isDefined”: 0,
“isNeed”: null,
“isFinish”: 1,
“childNode”: [{
“nodeName”: “我要报修”,
“isDefined”: 2,
“isNeed”: 0,
“isFinish”: 1
}]
}
]
}
后端打算用@RequestBody List deleveryDTO接收,
但是报错:“JSON parse error: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token\n at [Source: java.io.PushbackInputStream@7fb3b2a4; line: 1, column: 1]”,
看了之前同事写的代码,发现,类中的成员变量是list集合的话json可以自定解析,但是用LIst这种方式的话不能解析前端传的list数据,所以要多定义一个类,这个类专门接收参数,成员属性是list类型的.然后改成了这样:
@Data
public class DeliveryBatchDTO {
private List<DeliveryDTO> deliveryDTO;
}
视图层的接收参数变成:
**@RequestBody DeliveryBatchDTO deliveryDTO**
然后就可以接收前端传的list集合了.吃一堑长一智,对于我这样的小白,还是要多多学习.