我需要从一个对象创建一个json。该对象包含一个Name类型的List成员变量。Name是一个包含枚举NameType的类。下面是该类:
public final class Person { private final List<Name> names; }
public class Name {
private final String first;
private final String last;
private final String middle;
private final NameType type;
}
public enum NameType {
X,
Y,
Z
}
为类Person生成的json不应该包含NameType为Y和Z的Name。下面是我尝试生成json的简单方法:
Map<String, Object> personMap = mapper.readValue(person!=null ? mapper.writeValueAsString(person) : "{}", typeReference);
我需要从personMap中删除键“names”。我已经搜索了几种在序列化之前删除它的方法,但这些方法对我不起作用。我遵循了以下教程:https://www.baeldung.com/jackson-ignore-properties-on-serialization,并尝试使用type和filter移除它,但因为这是一个枚举,所以对我不起作用。因此,我有两个问题:
1.是否有办法不将Name属性包含在基于NameType的序列化中。
1.如果在序列化完成后有任何方法可以移除。下面是为map.
生成的结构
提前感谢!!
1条答案
按热度按时间elcex8rz1#
为了提供一个每个人都可以轻松编译和执行的MCVE,下面是我的示例类的更完整版本(包括getter):
第一个
如本教程中类似案例所述,我们可以将自定义
JsonSerializer<Name>
与BeanSerializerModifier
结合使用,将它们注册到SimpleModule
中的ObjectMapper
上:第一个
控制台日志应为:
哦,顺便说一句,以防不是每个人都知道Edward G. Robinson是谁...