【问题标题】:How to replace JsonIdentityInfo's id with the full object?如何用完整对象替换 JsonIdentityInfo id?
【发布时间】:2017-06-17 12:08:22
【问题描述】:

我的问题与 deserialize Jackson object in JavaScript containing JsonIdentityInfo 类似,但我正在使用 Java,我专门询问的是 jackson,而不是第 3 方的问题。

我正在将 JSON 从服务器发送到客户端。为了节省空间,我使用@JsonIdentityInfo 并且客户收到:

[
  {
    "id": 1,
    "nestedObject": {
      "id": 2,
      "someInt": 2,
      "someString": "a"
    }
  },
  {
    "id": 3,
    "nestedObject": 2
  }
]

但是客户端需要真实/完整的 JSON 表示,因为它正在使用不支持 JsonIdentityInfo 的解析器。 Jackson 是否有办法将紧凑表示“中途反序列化”为完整表示?

[
  {
    "id": 1,
    "nestedObject": {
      "id": 2,
      "someInt": 2,
      "someString": "a"
    }
  },
  {
    "id": 3,
    "nestedObject": {
      "id": 2,
      "someInt": 2,
      "someString": "a"
    }
  }
]

【问题讨论】:

  • 仅当 Sherlock 将编写新功能时。似乎您需要使用杰克逊视图。请检查此链接stackoverflow.com/questions/38279782/…
  • @eg04lt3r 我看不出这如何解决任何问题。该链接显示了如何根据需求发送 2 种不同的 JSON 表示。我只想发送一个。
  • 似乎杰克逊没有正确反序列化标记为@JsonIdentityInfo的对象的功能。我认为唯一可能的解决方案是编写自定义反序列化器。很多人都问过这个问题,但杰克逊没有开箱即用的解决方案。

标签: java json jackson jsonidentityinfo


【解决方案1】:

在做更多研究之后,现在似乎不可能做到,正如 cmets 中所说的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 2017-11-14
    • 2020-07-20
    相关资源
    最近更新 更多