首页 > 其他分享 >RestTemplate.exchange请求返回值包含list对象嵌套错误的情况

RestTemplate.exchange请求返回值包含list对象嵌套错误的情况

时间:2023-01-30 18:46:08浏览次数:38  
标签:myList name exchange RestTemplate list 返回值 data

简单做个记录,问题简单表述:使用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

相关文章

  • *143. Reorder List[Easy]
    143.ReorderListYouaregiventheheadofasinglylinked-list.Thelistcanberepresentedas:L0→L1→…→Ln-1→LnReorderthelisttobeonthe......
  • *21. Merge Two Sorted Lists[Easy]
    21.MergeTwoSortedListsYouaregiventheheadsoftwosortedlinkedlistslist1andlist2.Mergethetwolistsinaonesortedlist.Thelistshouldbemad......
  • Listener概述以及ServletContextListener使用
    Listener概述Listener:监听器事件:一件事情事件源:事件发送的地方监听器:一个对象(一段代码)注册监听:将事件,事件源,监听器绑定在一起,当事件源上发送某个事件......
  • java中在Controller层中对Service层返回的list集合进行分页
    将参数start,limit,Service层返回的符合条件的list集合传入自定义方法中,返回pageInfo即可(如下所示)##Controller层PageInfo<T>pageInfo=pageSet(start,limit,list);##......
  • 206. Reverse Linked List[Easy]
    206.ReverseLinkedListGiventheheadofasinglylinkedlist,reversethelist,andreturnthereversedlist.Constraints:Thenumberofnodesinthelist......
  • Quartz.Net 官方教程(Listener 和 JobStore)
    Listener调度任务的监听,当前版本支持添加调度,触发器和任务的监听,其中触发器和任务的监听支持通过监听名称进行添加(Add*ListenerMatcher方法)监听不能对外抛出异常,需要内部......
  • ArrayList动态扩容
    一、ArrayList的动态扩容机制要了解其动态扩容机制就必须先看它的源码,源码是基于jdk1.8的1.ArrayList的主要属性//如果不指定容量(空构造器),则在添加数据时的空......
  • 春哥博客 - ArrayList集合对象
    1、ArrayList集合对象usingSystem;usingSystem.Collections;namespaceArrayList集合{classProgram{staticvoidMain(string[]args)......
  • 春哥博客 - List 泛型集合
    usingSystem;usingSystem.Collections.Generic;namespaceList_泛型集合{classProgram{staticvoidMain(string[]args){......
  • 枚举类list序列化与反序列化
    `packagecom.byd.plm.authority.auth.dto.jsonSerializer;importcom.byd.plm.authority.auth.dto.enums.AuthTypeEnum;importcom.fasterxml.jackson.core.JsonGenerat......