是否有任何javascript库来表示@JsonIdentityInfo的json结果?

时间:2016-08-29 04:07:44

标签: javascript java json spring-mvc jackson

我有两个双向模型,我使用JsonIdentityInfo来防止json结果中的无限递归。这是我的viewmodels:

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class GroupsViewModel extends BaseEntityViewModel<Long> {
     private String               title;
     private Set<UserViewModel>   users;
}
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class UserViewModel extends BaseEntityViewModel<Long> {
     private String                 username;
     private String                 password;
     private Set<GroupsViewModel>   groups;
}

我的json结果的一部分如下:

[{
      "id" : 1,
      "title" : "adminGroup",
      "users" : [{
            "id" : 1,
            "username" : "admin",
            "password" : "...",
            "groups" : [1]
         }, {
            "id" : 31,
            "username" : "user78",
            "password" : "...",
            "groups" : [1]
         }, {
            "id" : 3,
            "username" : "ali",
            "password" : "...",
            "groups" : [{
                  "id" : 2,
                  "title" : "newsWriterGroup",
                  "users" : [{
                        "id" : 14,
                        "username" : "staff1",
                        "password" : "...",
                        "groups" : [{
                              "id" : 1005,
                              "title" : "FileManagerAccessGroup",
                              "users" : [{
                                    "id" : 25,
                                    "username" : "test1",
                                    "password" : "...",
                                    "groups" : [1005, {
                                          "id" : 1006,
                                          "title" : "noAccessGroup",
                                          "users" : [25, {
                                                "id" : 26,
                                                "username" : "test5",
                                                "password" : "...",
                                                "groups" : [1006]
                                             }
                                          ]
                                       }
                                    ]
                                 }, 14]
                           }, 2]
                     }, ...

如上所示,如果对象在json结果中重复,Jackson只会将其标识符放入其中。现在我想知道是否有任何javascript / jquery库来表示@JsonIdentityInfo的json-result?例如,当javascript / jquery库到达1005标识符时,它会自动加载id = 1005的组对象。

1 个答案:

答案 0 :(得分:0)

这种目标库存在的可能性很小。您可以轻松编写一个函数,通过使用typeof检查将数据解构为用户和组的数组,然后在groups或{{1}中遇到新对象时使用递归} attributes。

在打印出您没有创建循环引用的结果时要小心。请参阅this question以获取相关帮助。

&#13;
&#13;
users
&#13;
&#13;
&#13;

JSFiddle