0

我最近刚刚升级到 Jackson 2.0.5 并发现了这个名为 @JsonIdentityInfo 的新属性,它允许您定义一个对象一次,然后让序列化程序创建对该单个对象的引用,而无需在每次看到它时都创建重复项。其实很不错。http://wiki.fasterxml.com/JacksonFeatureObjectIdentity

该文档指出,此功能目前尚不支持数组。我想知道是否有人知道任何其他方法?我有一段可能如下所示的 JSON 片段:

{
    "people":[ 
       { "@id" = 1, "name"="bill"},
       { "@id" = 2, "name"="joe"}
    ],
    "friends": [1,2]

}

我想让“朋友”与“人”对象的数组一起膨胀,就像“人”一样。有谁知道这样做的方法?

4

2 回答 2

1

您可以使用 JSOG JS 库来做到这一点:https ://github.com/jsog/jsog ,但您需要序列化数据,例如:

{
"people":[ 
   { "@id" = 1, "name"="bill"},
   { "@id" = 2, "name"="joe"}
],
"friends": [ {@ref = 1}, {@ref = 2}]

}

或修改 JSOG 库。

于 2013-09-01T16:37:29.633 回答
1

您可以做的是使用仅包含数组或列表的包装 POJO。该 POJO 可以正常使用身份处理。它增加了一个额外的级别,但应该可以很好地工作。

如果您希望看到对列表/数组类型的支持,请确保在Github提交 RFE 。虽然实现起来并不简单,但它是可能的,只是相当多的工作(这就是为什么最初的实现专注于以 JSON 对象表示的事物的原因)。

于 2012-08-18T17:17:48.337 回答