2012-07-04 4 views
1

Что является самым простым способом рассказать Джексону не сериализовать определенный метод получения? Я только хочу сказать, что явно к одному добытчика, потому что у меня есть обычай, сложный класс, и все и присваивателя должны функционировать, только один не должен:Jackson deserialization specific getter turn off

mapper.configure(SerializationConfig.Feature.AUTO_DETECT_GETTERS, true); 

Так что это не правильный путь. Я должен сказать, что я не хочу использовать поглотитель в этом классе:

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() геттера?

ответ

1

У этой аннотации есть @JsonIgnore.

@JsonIgnore 
public KeyValue[] getEventKeyValues() { 
... 

Если вы не хотите использовать аннотацию для этого, то вам нужно написать custom serializer.

+0

Спасибо, я нашел его несколько секунд, но чтобы быть более странным: без аннотации? Есть ли другой вариант? Я не хочу писать в этот класс @JsonIgnore «EventRow», потому что он используется разными способами и не хочет, чтобы другой ppl отображал мой беспорядок, поэтому любой параметр Serialization.config или ...?: S – czupe

0

Я думаю, что это почти сделать это:

objectMapper.configure (DeserializationConfig.FAIL_ON_UNKNOWN_PROPERTIES, ложь);

+0

Обратите внимание, что это параметр конфигурации DEserialization - не используется для конфигураций сериализации. Его намерение состоит не в том, чтобы исключить исключение в случае, когда JSON включает элемент без свойства соответствия в дескрипции Java-структуры данных. –

2

Самый простой способ сказать Джексон не сериализовать конкретный метод получения ... без аннотаций?

Без написания сериалайзер клиента ...

Если непосредственно аннотирования поле/свойство/геттер/сеттер быть пропущено нежелательно, другой подход использовать the Jackson Mix-In feature.

Еще один подход для сериализации состоит в том, чтобы использовать the Jackson JSON Views feature, хотя для этого также требуются аннотации в некоторой емкости.

0

Это может зависеть от версии Джексона - до 1.9, геттеры и сеттеры обрабатывались отдельно, поэтому не было бы автоматического обнаружения геттера. Но с 1.9 и выше, setter/getter/field объединяются в логическое свойство, что позволяет Jackson вывести существование свойства из setter.

Так что вам, вероятно, нужно будет также отключить обнаружение сеттера. Другие варианты, уже предоставленные, также будут работать, а аннотации микширования - это общий способ сделать это.

0

objectMapper.configure (SerializationConfig.Feature.AUTO_DETECT_GETTERS, false);

Смежные вопросы