jackson – Требуемое имущество?

Я использую метод readValue () Jackson на объекте mapper для чтения из файла JSON и конвертирования его в свой Java-объект.

например.

mapperObject.readValue( node, MyTargetClass.class ) 

Есть ли какие-либо annotations, которые я могу установить в MyTargetClass для принудительного применения необходимых атрибутов? Например, если у меня есть объект JSON со свойствами ABC, DEF и GHI, а мой Json следующий

 { "ABC" : "somevalue" "DEF" : "someothervalue" } 

Я хочу, чтобы он каким-то образом потерпел неудачу и только преуспеть в readValue, если он содержит ABC, DEF и GHI.

jackson не включает в себя функции проверки, и это по дизайну (т. Е. Считается вне сферы охвата). Но обычно используется реализация API проверки Bean . Самое приятное в этом – развязка между обработкой формата данных и логикой проверки. Это то, что используют такие функции, как DropWizard; и именно JAX-RS (например, Джерси) использует JAX-RS 2.0.

Вы можете пометить свойство, как требуется, с помощью @JsonProperty(required = true) , и при десериализации будет выбрано исключение JsonMappingException, если свойство отсутствует или null.

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

Может быть, библиотека Google GSON лучше удовлетворит ваши потребности. Но это имеет противоположное требование: вы должны строго определять все структуры.