Spring Boot JSON возвращается иногда возвращает пустую строку, иногда ключевое слово null - PullRequest
0 голосов
/ 18 июня 2020

Spring Boot v 2.0.3 В зависимости от того, где запущен сгенерированный JAR, мы можем получить JSON, что выглядит так:

"myField": null

, однако при запуске в других системах может получить

"myField": ""

Мой первый вопрос: каким должен быть формат по умолчанию? Я получаю, что оба являются допустимыми форматами.

Когда я смотрю на контроллер, данные находятся в классе сущности java. Ясно, что Spring выполняет форматирование. Итак, мой вопрос - с чего начать или что попробовать, чтобы получить стабильный результат.

мы проверили java версии, версии jackson, операционные системы, это происходит как на windows, так и на linux.

спасибо

1 Ответ

0 голосов
/ 19 июня 2020

наконец нашел ... очевидно, кто-то создал классы

@Configuration
public class ObjectMapperConfig implements InitializingBean {

     @Autowired
      private NullSerializer nullSerializer;


      @Autowired
      private MappingJackson2HttpMessageConverter springMvcJacksonConverter;

    @Override
    public void afterPropertiesSet() throws Exception {
        ObjectMapper objectMapper = springMvcJacksonConverter.getObjectMapper();
        DefaultSerializerProvider serializerProvider = new DefaultSerializerProvider.Impl();
        serializerProvider.setNullValueSerializer(nullSerializer);
        objectMapper.setSerializerProvider(serializerProvider);

и

@Component
public class NullSerializer extends JsonSerializer<Object> {

    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        // TODO Auto-generated method stub

        gen.writeString("");

    }

, но не понял, почему они включены только в одном профиле. Я уверен, что это таится в аннотации @Profile.

...