RestTemplate getForObject 到 POJO
RestTemplate getForObject to POJO
我正在使用 RestTemplate.getForObject()
检索包含几个对象和数组的 json,我只想将此 json 中的一个对象转换为 POJO,我不关心这个 json 中的其他对象。
解决这个问题的正确方法是什么?
编辑:
接受答案的另一种方法,我们可以使用 jacksons ObjectMapper
@Autowired
private ObjectMapper jacksonObjectMapper;
然后
LinkedHashMap obj1 = restTemplate.getForObject(uri, LinkedHashMap.class, params);
LinkedHashMap obj2 = (LinkedHashMap)test.get("flightStatuses");
Flight flight = jacksonObjectMapper.convertValue(obj2, Flight.class);
您明白了,只需从您的 json 结构中获取一个通用数据类型,然后使用 ObjectMapper
将其转换为您需要的 class。
一个解决方案是创建一个包装器 class,其中包括您要反序列化的 POJO,并使用 @JsonIgnoreProperties
忽略所有其他属性。然后您将检索包装器对象并从中获取 POJO。
@JsonIgnoreProperties(ignoreUnknown=true)
public class Wrapper {
private MyPojo myPojo;
}
MyPojo myPojo = restTemplate.getForObject("url", Wrapper.class).getMyPojo();
我正在使用 RestTemplate.getForObject()
检索包含几个对象和数组的 json,我只想将此 json 中的一个对象转换为 POJO,我不关心这个 json 中的其他对象。
解决这个问题的正确方法是什么?
编辑:
接受答案的另一种方法,我们可以使用 jacksons ObjectMapper
@Autowired
private ObjectMapper jacksonObjectMapper;
然后
LinkedHashMap obj1 = restTemplate.getForObject(uri, LinkedHashMap.class, params);
LinkedHashMap obj2 = (LinkedHashMap)test.get("flightStatuses");
Flight flight = jacksonObjectMapper.convertValue(obj2, Flight.class);
您明白了,只需从您的 json 结构中获取一个通用数据类型,然后使用 ObjectMapper
将其转换为您需要的 class。
一个解决方案是创建一个包装器 class,其中包括您要反序列化的 POJO,并使用 @JsonIgnoreProperties
忽略所有其他属性。然后您将检索包装器对象并从中获取 POJO。
@JsonIgnoreProperties(ignoreUnknown=true)
public class Wrapper {
private MyPojo myPojo;
}
MyPojo myPojo = restTemplate.getForObject("url", Wrapper.class).getMyPojo();