如何在序列化/反序列化时使用不带注解的Jackson重命名属性?

wyyhbhjk  于 2022-09-18  发布在  Go
关注(0)|答案(1)|浏览(125)

如何让Jackson在序列化时将字段id重命名为_id,在反序列化时反之亦然,而无需在类上添加任何注解

例如,此对象:

{
  "id": "abc",
  "value": "foo"
}

应序列化为:

{
  "_id": "abc",
  "value": "foo"
}

我希望它适用于任何类,而不需要用@JsonProperty("_id")注解每个id字段

xa9qqrwz

xa9qqrwz1#

我已经找到了一个相当好的解决这个问题的办法。

val document = objectMapper.convertValue(data, Document::class.java)
if ("id" in document) {
    document["_id"] = document["id"]
    document.remove("id")
}
objectMapper.writeValueAsString(document)

首先将该对象转换为Map/树状结构(如使用Mongo时为Document),这很容易编辑,并在进行更改后将其序列化/反序列化为您想要的格式。我不确定这个解决方案的表现如何,但它似乎非常直截了当。

相关问题