使用情景:

        自己的项目中有一个情景,就是前端需要需要调用服务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);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐