rest template serialize / deserialize使用各种键值对映射对象

时间:2012-04-02 16:28:03

标签: json jackson resttemplate

我正在使用带有jackson的resttemplate来对marshall / unmarshall java / json对象进行操作。 什么是序列化/反序列化的最佳策略

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

我在这个网站上做过一些研究,发现使用@JsonAnyGetter @JsonAnySetter 可以在这种情况下使用,但不确定如何在上下文中反序列化 resttemplate getforobject方法。是否必须编写自定义httpmessageconverter 完成反序列化? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我们假设您有这样的回复:

{ key1: "something", key2: 3}

您希望拥有包含这些字段的DTO:

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

确保为上述内容添加getter和setter。

现在提出您的要求:

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

请求对象可以是上面的DTO,也可以使用Arrays和Maps来构造requestObject。

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

@JsonIgnoreProperties(ignoreUnknown = true)