【问题标题】:Bind JSON response with dynamic keys to Java object将带有动态键的 JSON 响应绑定到 Java 对象
【发布时间】:2018-02-23 12:58:15
【问题描述】:

我有一个来自 MongoDB 的 json 响应,在其当前形式中,我有一个如下所示的 pojo 来绑定这些月份字段值:-

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

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

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

谢谢。

【问题讨论】:

  • 为什么不直接使用Map<String, Float>

标签: java json mongodb bytecode pojo


【解决方案1】:

在你的 POJO 中,添加一个类成员如下:

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

然后创建一个带有@JsonAnySetter注解的方法:

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

此方法用作 JSON 文档中所有无法识别的属性的后备处理程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 2022-08-20
    • 1970-01-01
    • 2011-09-17
    • 2022-08-18
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多