如何使用Spring Rest Template在请求体中发送List
解决List作为JSON请求体发送的异常问题
我来帮你梳理下问题并修正代码——你现在的核心问题是请求体的封装逻辑不对,导致没法正确把List序列化成符合要求的JSON格式。
问题分析
你原来的代码里错误地用MultiValueMap<List, String>来包裹文件名List,这完全没必要:MultiValueMap是用来处理表单数据或多值参数的,而我们需要的是把List直接序列化为JSON数组,所以直接将List作为请求体的主体就可以了。
修正后的代码
def demo(def url, def returnObject, List filenames) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 直接将List作为请求体内容,无需嵌套MultiValueMap HttpEntity<List<String>> request = new HttpEntity<>(filenames, headers); return methodcall.postForObject(url, request, returnObject); }
关键说明
- 当你把请求头的
ContentType设为APPLICATION_JSON后,RestTemplate会自动将List序列化为["file1.txt", "file2.jpg", ...]这样标准的JSON数组格式,完全满足接口的JSON请求体要求。 - 只要你的
methodcall是合法的RestTemplate实例,这段代码就能正常运行,不会再出现序列化异常。
内容的提问来源于stack exchange,提问作者java
相关产品推荐
相关产品推荐

