我有一个处理类型之间关系的对象模型。这些引用有时会自行循环,并且为了阻止它(例如在REST调用中)我使用@JsonIgnore
标记之类的东西来确保我没有得到无限的嵌套递归。
这个问题更多的是背景问题。如果我想要一个项目包含在一个点而不是另一个点(如果是嵌套的),@JsonIgnore
会从两个点停止它。
示例:
public class A implements Serializable{
Set<B> bs;
Set<C> cs;
...
}
public class B implements Serializable{
String name;
Set<D> ds;
...
}
public class C implements Serializable{
B b;
...
}
public class D implements Serializable{
...
}
如果A
是我运送物品的主要容器。在B
中列出的A
上下文中,我希望显示Set<D>
。但是,如果在B
的上下文中使用了对象C
,我想隐藏Set<D>
并仅显示名称。
如果我在@JsonIgnore
上标记B.ds
,则无论如何都不会显示C.b
。我可以在@JsonIgnore("ds")
上放一些注释/自定义来忽略内部属性吗? $MySQL_Handle = mysqli_connect(HOSTNAME,DATABASE_USERNAME,DATABASE_PASSWORD,DATABASE_NAME)
$sSQL= 'SET CHARACTER SET utf8';
mysqli_query($MySQL_Handle,$sSQL)
还是什么?还有另一种方法可以完全解决这个问题吗?
答案 0 :(得分:3)
您可以使用@JsonView
注释字段,然后指定要在特定情况下使用的序列化视图。 Here's a post about using it with SpringMVC但无论如何,方法都是一样的。
所以在你的具体例子中,
public class View {
interface Full {}
interface Summary {}
}
public class B implements Serializable{
@JsonView({View.Summary,View.Full})
String name;
@JsonView(View.Full)
Set<D> ds;
}