Spring Boot v 2.0.3
根据生成的JAR的运行位置,我们可能会获得类似于以下内容的JSON:

"myField": null


但是在其他系统上运行时可以得到

"myField": ""


我的第一个问题是默认格式应该是什么?我确实都是有效格式。

查看控制器时,数据位于Java实体类中。很明显,Spring正在进行格式化。所以我的问题是从哪里开始或尝试一些事情以获得一致的输出。

我们已经检查了Java版本,杰克逊版本,操作系统,它们同时在Windows和Linux上发生。

谢谢

最佳答案

终于找到了..
显然有人创建了课程

@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批注中。

09-10 08:18
查看更多