2012-04-02 85 views
0

我正在使用resttemplate与杰克逊marshall/unmarshall java/json对象。 什么是序列化的最佳策略/反序列化其余模板序列化/反序列化与variosu键,值对映射对象

可能包含键值对,这样的键是字符串,值可以 是多种类型,例如自定义的ArrayList对象

我做了一些研究地图在这个网站上,发现使用@JsonAnyGetter @JsonAnySetter 可以用在这种情况下,但并不确定如何在resttemplate getforobject方法的上下文 中反序列化。将不得不写一个自定义httpmessageconverter 来完成反序列化? 在此先感谢。

回答

0

我们假设你有一个这样的回应:

{ key1: "something", key2: 3} 

你会希望有一个DTO有这些领域:

class CustomResponse { 
    private String key1; 
    private long key2; 
} 

请务必添加getter和setter以上。

现在提出请求:

restTemplate.postForObject(url, requestObject, CustomResponse.class); 

请求对象可以是DTO像上面或只是使用数组和地图构建requestObject。

您应该将此注释添加到您的答复DTO中。这可以确保如果响应中的字段未映射到DTO中,它们将被忽略。

@JsonIgnoreProperties(ignoreUnknown = true)