关于jackson序列化和feign返回值的问题

网友投稿 1295 2022-10-20

关于jackson序列化和feign返回值的问题

关于jackson序列化和feign返回值的问题

目录jackson序列化和feign返回值jackImCOPMKson注意点feignClient返回值问题feign调用异常,反序列化失败异常消息如下

jackson序列化和feign返回值

jackson注意点

被序列化/反序列化的实体

a.必须要有无参构造方法

b.字段要有set/get方法

c.不需要序列化的字段 可以用@jsonIgnore 修饰

feignClient 返回值问题

返回值的类型 不一定 和被调用方返回值类型一样

如:

被调用方是

@ResponseBody

@RequestMapping("test");

public Map test(){

Map map = new HashMap();

map.put("name","zhangsan");

map.put("address","地址");

return map;

}

调用方:

@FeignClient("xxxx")

public Interface xxService{

@RequestMapping("/test")

Test test();

}

/**

* 实体类对应的属性 和 map中对应 就行了

*/

@Data

class Test{

public Test(){}

private String name;

private StrImCOPMKing address;

}

还有个方法就是 调用方直接用string 接收 再自己转换

feign调用异常,反序列化失败

异常消息如下

nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `xxx` out of START_OBJECT token

本来我用fastjson消息转换器替换了原来的消息转换器,我以为是没有替换掉,折腾了一阵

后来去掉fastjson消息转换器还是报错,我想着应该是返回的数据问题

被调用服务控制层返回的数据和我反序列的对象一致,应该是被调用服务对返回的数据统一做了包装,导致的问题,去除包装就好了,或者反序列化的对象为包装后的对象

我是在方法映射上加headers属性,属性值Keep-Original=Keep-Original,去除包装

@GetMapping(value = "xxx",headers = {"Keep-Original=Keep-Original"})

最后问题就完美解决了

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:UVALive 6184 - One-Dimensional Cellular Automaton 高斯消元模板题 (2012 Tokyo)
下一篇:Shuttler.Net- 高性能分布式框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~