Как избежать пустых объектов в моем ответе REST JSON? - PullRequest
0 голосов
/ 28 июня 2019

Я получаю что-то вроде этого в своем ответе JSON (у меня есть реализация REST в SpringBoot):

"estimatedDeliveryTimeWindow":{  
  "window":{}
}

Я установил пользовательские HTTPMessageCOnverters и настроил объектMapper следующим образом:

objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);

Также попытался удалить конвертеры по умолчанию, используя следующий код:

@Bean
public HttpMessageConverters converters() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        jsonConverter.setObjectMapper(objectMapper);
        return new HttpMessageConverters(false, Arrays.asList(jsonConverter));
}

Кажется, ничего не работает. Я все еще вижу нулевые объекты внутри объектов. Эти объекты являются сложными объектами, вложенными в примитивные типы и пользовательские объекты. Что еще я могу попробовать?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Пожалуйста, добавьте @ JsonInclude (Include.NON_NULL) перед файлами классов

@JsonInclude(Include.NON_NULL)
public class MobileLoginVO {

    private String otpDetailsId;

    public String getOtpDetailsId() {
        return otpDetailsId;
    }

    public void setOtpDetailsId(String otpDetailsId) {
        this.otpDetailsId = otpDetailsId;
    }

}
0 голосов
/ 28 июня 2019

Вам нужно как-то сообщить весне, чтобы использовать конвертер сообщений.

Это должно сделать работу:

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

    public MappingJackson2HttpMessageConverter messageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
        jsonConverter.setObjectMapper(objectMapper);

        return jsonConverter;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(messageConverter());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...