使用情景:
自己的项目中有一个情景,就是前端需要需要调用服务B,但是其中有些数据服务A需要保存,所以改为前端调用A,再由A调用B,至于为什么不直接B调用A,这是因为服务的上下级关系问题(最重要的是项目组长决定的)。Feign接口与Service是分开的两个模块。A服务的Feign接口中是不会去导入B服务的服务的Feign接口的。这时候如果使用对象接收,那么就需要A服务创建一个与B服务相同的DTO对象,这样的话A服务就参与维护了B服务的属性对象,这种做法是不明智的。所以A服务用JsonNode接收数据,到Service层级再将JsonNode转为B服务的DTO即可。
使用ObjectMapper来进行操作:
由于在SpringBoot中已经维护了ObjectMapper对象,因此只需要注入即可。
@Autowired
private ObjectMapper objectMapper;
更推荐使用构造器注入
private final ObjectMapper objectMapper;
public 你的类名(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
对象转为JsonNode
JsonNode data = objectMapper.valueToTree(需要转换的对象);
JsonNode转对象
你的对象类 变量名称 = objectMapper.convertValue(jsonNode, 你的对象类.class);