使用动态密钥将JSON响应绑定到Java对象

时间:2018-02-23 12:58:15

标签: java json mongodb bytecode pojo

我有来自MongoDB的json响应,并且在其当前形式中我有一个类似于下面的pojo来绑定这些月字段值: -

@JsonProperty("Feb-2017")
private Float feb2017;

问题是这些月份名称随时间而变化,这些值将不再绑定到java对象.POJO又是表示此json的另外两个对象的属性。我无法更改Db中的json结构,并尝试在this answer之后的运行时创建此pojo,但我无法弄清楚如何在其他POJO中引用此对象。

还有其他方法可以解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:2)

在您的POJO中,添加一个类成员,如下所示:

private Map<String, Object> months = new HashMap<>();

然后创建一个用@JsonAnySetter注释的方法:

@JsonAnySetter
public void set(String key, Object value) {
    months.put(key, value);
}

此方法用作JSON文档中找到的所有无法识别属性的回退处理程序。