【发布时间】:2015-06-24 19:02:15
【问题描述】:
我正在尝试根据来自父级的信息有条件地序列化子 bean。
public class Parent {
private boolean isSecure;
private Child child;
}
public class Child {
String someValue;
}
基本上,如果parent.isSecure() 为真,那么我想以不同于parent.isSecure() 为假的方式序列化someValue。
我的实际类比这个简单的例子复杂得多,所以我真的不想为 Parent 创建一个我需要单独维护的完整自定义序列化程序(除非你可以告诉我如何利用标准序列化用于自定义序列化程序中的Parent,而无需遍历所有属性并处理 JSON 注释、视图等。如果可以,那可能会起作用,因为我可以基于isSecure() 设置上下文属性。
我不介意为孩子编写自定义序列化程序,但我不知道如何检查父级的值。
我考虑过使用“安全”视图和“不安全”视图,我可以在整个序列化过程之外指定它们,但随后我必须检查并注释父类的许多属性才能同时在'secure' 和 'insecure' 视图(由于我不想被序列化的许多属性,我已经关闭了DEFAULT_VIEW_INCLUSION 选项)。
我尝试在我的自定义子序列化程序中访问 generator.getCurrentValue(),但它始终为空,所以我不确定它应该如何工作。
我考虑过为isSecure 编写一个自定义序列化程序,并在其中设置一个上下文属性,但我如何确定它会在孩子的自定义序列化程序之前被调用? (尽管我承认我不确定上下文属性是否真的像我假设的那样起作用。)
有什么想法吗?
【问题讨论】:
标签: java json serialization jackson