告诉Jackson不要序列化特定的getter方法的最简单的方法是什么?我只想对一个getter说explicit,因为我有一个自定义的复杂类,所有的setter和getter都应该起作用,只有一个不应该:
mapper.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, true);
字符串
所以这不是正确的方法。我需要告诉你我不想在这个类中使用getter:
public static class EventRow implements Serializable, Cloneable, GRSerializable {
public int x
public int y
public double z
public String eventKeyValuesPacked;
//This getter should not be used, because there is no explicit setter
//for this, and also no public... And it is only unpack
//EventKeyValuesPacked so it would be multiple data...
public KeyValue[] getEventKeyValues() {
KeyValue[] kvs = DA_EventKey.unpackKeyValues(eventKeyValuesPacked);
return kvs == null ? new KeyValue[0] : kvs;
}
}
型
是否有任何注解或SerializationConfig
选项可以使getEventKeyValues()
getter方法不可见?
5条答案
按热度按时间eaf3rand1#
告诉Jackson不要序列化一个特定的getter方法.没有注解的最简单的方法是什么?
如果不编写客户序列化程序...
如果不希望直接注解要跳过的字段/属性/getter/setter,另一种方法是使用the Jackson Mix-In feature。
另一种仅用于序列化的方法是使用the Jackson JSON Views feature,尽管这在某种程度上也需要注解。
c6ubokkw2#
这里有一个注解:
@JsonIgnore
。字符串
如果你不想为此使用注解,那么你需要写一个custom serializer。
fhg3lkii3#
这可能取决于Jackson的版本--在1.9之前,getter和setter是分开处理的,所以没有自动检测getter就足够了。但是在1.9和更高版本中,setter/getter/field都被合并到逻辑属性中,这可能允许Jackson从setter推断属性的存在。
所以你可能需要做的是禁用setter检测。其他已经给出的选项也可以工作,混合注解是一种常见的方法。
5cg8jx4n4#
字符串
ttisahbt5#
我想这几乎做到了:
字符串