当前位置: 首页 > news >正文

RestTemplate修改默认转换器,使用FastJsonConverter

问题描述:
在使用RestTemplate发送POST请求时,发现发送的数据并未按配置的@JSONField转换,导致服务方一直收不到参数
在这里插入图片描述

排查过程:
将itemList改成Items传输即可

原因分析:
RestTemplate有默认的转换器,所以配置@JSONField 没有作用

解决办法:
修改RestTemplate默认的转换器、或者将变量名改为Items

package com.rimag.adapter.config;import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.List;/*** @author: hong* @date: 2024/6/18 10:25* @description*/
@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate() {// 设置超时时间HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();httpRequestFactory.setConnectionRequestTimeout(3000);httpRequestFactory.setConnectTimeout(3000);httpRequestFactory.setReadTimeout(3000);RestTemplate restTemplate = new RestTemplate(httpRequestFactory);//换上fastjsonList<HttpMessageConverter<?>> messageConverters= restTemplate.getMessageConverters();Iterator<HttpMessageConverter<?>> iterator=messageConverters.iterator();while(iterator.hasNext()){HttpMessageConverter<?> converter=iterator.next();//原有的String是ISO-8859-1编码 去掉if(converter instanceof StringHttpMessageConverter){iterator.remove();}//由于系统中默认有jackson 在转换json时自动会启用  但是我们不想使用它 可以直接移除if(converter instanceof GsonHttpMessageConverter || converter instanceof MappingJackson2HttpMessageConverter){iterator.remove();}}messageConverters.add(new StringHttpMessageConverter(StandardCharsets.UTF_8));FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();FastJsonConfig fastJsonConfig = new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.WriteNullListAsEmpty,SerializerFeature.DisableCircularReferenceDetect);fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);// 添加 FastJsonHttpMessageConverter,优先级高于默认的 MappingJackson2HttpMessageConverter,否则RestTemplate发送请求转换不会按@JSONField注解messageConverters.add(fastJsonHttpMessageConverter);return restTemplate;}
}
http://www.lryc.cn/news/384821.html

相关文章:

  • 什么是div移动指令?如何用vue自定义指令实现?
  • Golang | Leetcode Golang题解之第187题重复的DNA序列
  • 智能猫砂盆到底是不是智商税?解救上班族双手的测评合集来了
  • java 数据新增、更新、删除监听,并记录日志或其他业务
  • developer.android.com在国内无法正常访问解决方法
  • 大学物理(下)笔记
  • Mind+在线图形编程软件(Sractch类软件)
  • 数智化招采供应链平台七大优点
  • Java面试题:对比HTTP的GET和POST方法,并讨论它们的使用场景
  • webpack+webpack server入门
  • Java内存模型以及多线程并发深度剖析
  • 【JS问题】require相对路径引入模块
  • SAP ABAP 常用实用类
  • 笔记本电脑录屏,教你3个方法,简单录屏
  • A-8 项目开源 qt1.0
  • CNC数控机床如何通过工业智能网关实现远程运维?天拓四方
  • PMP培训,哪个机构的通过率高?
  • 贷款承诺状态映射参数表,用于加工的提示信息
  • 理解 iOS 开发中的 NS_ENUM 和 NS_OPTIONS
  • 2024年6月26日 (周三) 叶子游戏新闻
  • LangChain4j之HelloWorld
  • MySQL 基础概念
  • RabbitMQ 学习笔记
  • 【区分vue2和vue3下的element UI MessageBox 弹框组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • 避而不见!BigDecimal的四大坑
  • IDEA 安装与激活详细教程最新(附最新激活码)2099年亲测有效!
  • LeetCode 100334. 包含所有 1 的最小矩形面积 I
  • pdf只要前几页,pdf怎么只要前几页
  • JAVA JVM 是怎么判定对象已经“死去”?
  • springboot加载注入bean的方式