gpt4 book ai didi

java - Spring Boot JSON 返回有时返回空字符串有时返回 null 关键字

转载 作者:行者123 更新时间:2023-12-01 16:14:34 25 4
gpt4 key购买 nike

Spring Boot v 2.0.3根据生成的 JAR 的运行位置,我们可能会得到如下所示的 JSON:

"myField": null

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

"myField": ""

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

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

我们检查了java版本、jackson版本、操作系统,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 注释中。

关于java - Spring Boot JSON 返回有时返回空字符串有时返回 null 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62439894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com