Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type java.util.ArrayList<com.example.demo1.entities.JournelDetailREQ>
from Object value (token JsonToken.START_OBJECT
); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type java.util.ArrayList<com.example.demo1.entities.JournelDetailREQ>
from Object value (token JsonToken.START_OBJECT
) at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 1]]
在遇到这种问题时,如果只是针对于后端接口的测试,没有前端页面时,我们只需要针对传入后端的JSON数据格式进行改进:
{
// 错误点就是这个名称这里
"List": [
{
"name": "张三",
"age": "18"
},
{
"name": "李四",
"age": "20"
},
{
"name": "沈查",
"age": "23"
}
]
}
改进
[
{
"name": "张三",
"age": "18"
},
{
"name": "李四",
"age": "20"
},
{
"name": "沈查",
"age": "23"
}
]
这是我们在做后端接口设计测试时常遇到的一种情况的解决方式
第二种情况是我们前端传入后端的数据时一个定义好的list譬如:
wx.request({
url: '',
data: {
list: this.data.list
},
method: "POST"
})
类似于以上这种方式进行数据传输时,我们就应该在后端通过定义对象来实现
public class AddListREQ {
// 将我们列表中的对象类型包装为类的属性来进行传递
private ArrayList<JournelDetailREQ> list;
}
之后在Controller中通过@ResquestBody进行接受
public ResposeEntity addDailyList(@RequestBody AddListREQ addListREQ) {
// 业务逻辑
}
这种方式可以解决我们后端设计时前端传递参数已经固定的情况下