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