我刚刚升级到Jackson 2.0.5并发现了这个名为@JsonIdentityInfo的新属性,它允许您定义一次对象,但是让序列化程序创建对该单个对象的引用,而不会在每次看到它时创建重复项。实际上相当不错。 http://wiki.fasterxml.com/JacksonFeatureObjectIdentity
该文档指出此功能目前尚不支持数组。我想知道是否有人知道其他方法吗?我有一段JSON,可能看起来像这样:
{
"people":[
{ "@id" = 1, "name"="bill"},
{ "@id" = 2, "name"="joe"}
],
"friends": [1,2]
}
我希望让“朋友”充满“人”对象,就像“人”一样。有谁知道这样做的方法?
答案 0 :(得分:1)
您可以做的是使用仅包含数组或List的包装器POJO。 POJO可以正常使用身份处理。它增加了一个额外的级别,但应该很好地工作。
如果您希望看到对列表/数组类型的支持,请务必在Github处提交RFE。虽然实现起来非常重要,但可能只需要相当多的工作(这就是为什么原始实现专注于表达为JSON对象的东西)。
答案 1 :(得分:1)
您可以使用JSOG JS库https://github.com/jsog/jsog执行此操作,但您需要序列化数据,如:
{
"people":[
{ "@id" = 1, "name"="bill"},
{ "@id" = 2, "name"="joe"}
],
"friends": [ {@ref = 1}, {@ref = 2}]
}
或修改JSOG库。