如何使用JacksonConverter将Json对象转换为更改的变量

时间:2014-03-18 16:04:00

标签: json jackson

我们说我有JSON

{
    "anonymous": {
        "id": 39053697,
        "name": "Anonymous"
    }
}

anonymous是发送到API的查询,并将针对每个逐个查询进行更改。因此,如果我要查询John,它将如下所示:

{
    "john": {
        "id": 3456987,
        "name": "John"
    }
}

我正在尝试使用JacksonConverter将此Json转换为Android中的对象。 目前我有:

public class NameVo {
    public InfoVo john;

    public InfoVo getResults() {
        return john;
    }
}

这就是我目前将JSONObject匹配的方式,我不确定如何使NameVo灵活处理所有可能的查询。

1 个答案:

答案 0 :(得分:1)

您应该使用@JsonAnySetter注释:

class NameVo {

    public InfoVo value;

    public InfoVo getValue() {
        return value;
    }

    @JsonAnySetter
    public void setAnyValue(String propertyName, InfoVo value) {
        System.out.println("Name: " + propertyName);
        this.value = value;
    }

    @Override
    public String toString() {
        return String.valueOf(value);
    }
}

现在,简单的用法:

ObjectMapper mapper = new ObjectMapper();

System.out.println("Serialize to JSON:");
System.out.println(mapper.readValue(json, NameVo.class));

以上程序打印:

Serialize to JSON:
Name: john
InfoVo [id=39053697, name=Anonymous]