我有两个双向模型,我使用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的组对象。
答案 0 :(得分:0)
这种目标库存在的可能性很小。您可以轻松编写一个函数,通过使用typeof
检查将数据解构为用户和组的数组,然后在groups
或{{1}中遇到新对象时使用递归} attributes。
在打印出您没有创建循环引用的结果时要小心。请参阅this question以获取相关帮助。
users
&#13;