Jackson 反序列化嵌套 JSON 中的属性

问题描述 投票:0回答:1

我有一个看起来像这样的 POJO

class Bean {
    private Instant created;
    private Instant updated;
    private String name;
    private int count;
} 

输入的 JSON 数据如下所示

{
  "time_created": <custom timestamp>,
  "time_updated": <custom timestamp>,
  // Other data...
  "person": {
    "name": "John"
    // Other data...
  },
  "stats": {
    "button": {
      "count": 5
      // ...
    }
    // ...
  }
}

我想反序列化 JSON,以便将其展平为 POJO。嵌套类感觉有点矫枉过正,因为我只想要一个特定的属性,并且我不想进行像

bean.getStats().getButton().getCount()
这样的调用,我只想要
bean.getCount()
。我已经使用自定义解串器完成了此操作,但它很混乱且脆弱。

有没有办法通过注释来做到这一点?类似的东西

@JsonProperty(name = "count", root = "stats/button")
private int count;

此外,

Instants
需要自定义解串器。我相信我可以用

来覆盖它
@JsonDeserialize(using = CustomInstantDeserializer.class)
private Instant created;
@JsonDeserialize(using = CustomInstantDeserializer.class)
private Instant updated;

作为每个字段的注释。

java jackson annotations deserialization
1个回答
0
投票

抱歉让您失望了,但这似乎是杰克逊的一个悬而未决的问题: https://github.com/FasterXML/jackson-annotations/issues/42 如果您愿意,您可以对此问题进行投票,他们可能会在将来添加它,但现在您需要使用自定义解串器手动执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.