как исключить пустые свойства json при десериализации json в jersey rest api [duplicate]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

2
задан Alex 21 September 2014 в 15:51
поделиться

1 ответ

Я верю, что джерси использует джексон для сериализации. Для исключения нулевых полей из сериализованного json попробуйте аннотировать целевой класс с помощью @JsonInclude(Include.NON_NULL). Как объяснено в этой записи.

Если вы не можете изменять объекты, вы должны настроить свой собственный ObjectMapper:

@Provider
public class MyObjectMapperProvider implements ContextResolver<ObjectMapper> {

    final ObjectMapper mapper;

    public MyObjectMapperProvider() {
        mapper = new ObjectMapper();
        mapper.setSerializationInclusion(Include.NON_NULL);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return mapper
    }
}

, а затем зарегистрировать своего настраиваемого поставщика клиенту:

Client client = ClientBuilder
    .newClient()
    .register(MyObjectMapperProvider.class)
    .register(JacksonFeature.class);

описано здесь

5
ответ дан Community 18 August 2018 в 14:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: