com.fasterxml.jackson.annotation.JsonFormat 自定义时间格式失效

本文讲述了如何解决在使用com.fasterxml.jackson.annotation.JsonFormat自定义时间格式时遇到的问题,通过将参数转换为ObjectMapper字符串形式得以解决,关键在于序列化和反序列化的时机选择。
摘要由CSDN通过智能技术生成

com.fasterxml.jackson.annotation.JsonFormat 自定义时间格式失效!!!

问题:在请求三方接口,一直请求失败,查看日志调试来看,原来是请求的日期参数不对,但是我传递的格式都是按照接口文档来传递的,百思不得其解,经过查阅资料,发现是JsonFormat 自定义时间格式失效了!

原因:因为我直接把参数塞到了 JSONObject 里,编译的时候会反序列化,导致了JsonFormat 失效,换成ObjectMapper,然后再传化一下String,JsonFormat 自定义时间格式可以生效了!

 //Hutool web 请求方式
JSONObject valueAsString = new JSONObject(param);
            HttpResponse response = HttpRequest.post(url)
                    .header("Accept-Charset", "UTF-8")
                    .header("Content-Type", "application/json")
                    .body(valueAsString)
                    .timeout(6000)
                    .executeAsync();

            JSONObject responseJson = new JSONObject(response.body());
            String type = (String) responseJson.get("type");
            String message = (String) responseJson.get("message");
            dto.setType(type);
            dto.setMessage(message);

换成ObjectMapper;

  //Hutool web 请求方式
            ObjectMapper mapper = new ObjectMapper();
            String valueAsString = mapper.writeValueAsString(param);
            HttpResponse response = HttpRequest.post(url)
                    .header("Accept-Charset", "UTF-8")
                    .header("Content-Type", "application/json")
                    .body(valueAsString)
                    .timeout(6000)
                    .executeAsync();

            JSONObject responseJson = new JSONObject(response.body());
            String type = (String) responseJson.get("type");
            String message = (String) responseJson.get("message");
            dto.setType(type);
            dto.setMessage(message);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值