问题记录: 跨服务接口调用日期类型字段格式转换问题
1. 问题描述
两个服务A和B, A服务向B服务发送一个 POST请求, 传入的JSON字符串参数中包含日期格式的字段, 由于发送端和接收端参数序列化的方式不一样, 导致日期格式转换错误.
错误截图如下
2. 核心代码
public <T> T doPost(String url, Object param, Class<T> responseType) {String paramStr = new Gson().toJson(param);return new Gson().fromJson(HttpUtil.doPost(url, paramStr), responseType);
}
这里的入参JSON序列化是用的 google的Gson 库, 而我们知道SpringMVC 在Controller 请求方法中序列化方式是 jackson 这个库. 两者是不同的. 这就导致出现错误.
3. 解决办法
使用Gson JSON序列化方式, 在发送端也采用 jackson库的序列化方式
改进代码是
ObjectMapper mapper = new ObjectMapper();
String paramStr = mapper.writeValueAsString(param);