简单做个记录,问题简单表述:使用restTemplate.exchange请求某个GET方法时,返回值的对象内包含list,list的嵌套出现错误
1、问题
之前一个Spring Boot项目中使用restTemplate做请求转发,在请求某个GET方法后,发现获取的返回值结构出现了问题:
正常对象应当是:
{ "data":{ "myList": [ {"name":"1"}, {"name":"2"}, {"name":"3"} ] } }
实际返回变成了:
{ "data": { "myList": { "myList": [ { "name": "1" }, { "name": "2" }, { "name": "3" } ] } } }
如果myList内只有一个元素,则整个list都会变成一个对象:
{ "data": { "myList": { { "name": "1" } } } }
2、定位
一步步debug后发现,exchange.getBody()的返回值展开后为XML格式,数组或列表对象会被解析为<myList><myList>…………<myList></myList>,导致默认的反序列化方法出错
3、解决
这边只是使用headers.setAccept() 指定了restTemplate的header内的accept为application/json格式,解析后返回值格式正确,若为XML格式的返回,需要做其他处理,改天再写
标签:myList,name,exchange,RestTemplate,list,返回值,data From: https://www.cnblogs.com/sefuture/p/17076963.html