Адам Бьен написал хорошую статью Сериализация частных полей с JSON-B и JAX-RS 2.1 / Java EE 8 , которая, как я думал, исправит это. Идея заключается в реализации пользовательского PropertyVisibilityStrategy
для частных полей. К сожалению, по какой-то причине это не сработало в моей ситуации.
Я внес небольшое изменение в код Адама, а также изменил методы отображения. Теперь мои коллекции десериализованы.
/**
* JSON-B visibility strategy for deserialization.
*
* Enables JSON binding of private fields without a setter.
*/
public class JsonDeserializationStrategy implements PropertyVisibilityStrategy {
@Override
public boolean isVisible(Field field) {
return true;
}
@Override
public boolean isVisible(Method method) {
return true;
}
}
Я использую это PropertyVisibilityStrategy
только для десериализации, как следует из названия. Сериализация выполняется с настройками по умолчанию.