SpringBoot中使用Jackson将null值转化为""

SpringBoot中使用Jackson将null值转化为""

前言:在实际项目中难免会遇到null值的出现,但是我们转json时并不希望出现NULL值,而是将NULL值转化为 “” 这种空的字符串。那么,我们应该如何处理呢?在SpringBoot中,新建一个配置类即可。

@Configuration
public class JacksonConfig {

    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
        ObjectMapper objectMapper = builder.createXmlMapper(false).build();
        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
            @Override
            public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
                jsonGenerator.writeString("");
            }
        });
        return objectMapper;
    }
}

如此一来,遇到NULL值的时候,都会转化为""的形式。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在 Spring Boot 使用 Jackson 进行 JSON 转换,可以考虑以下几个优化方案: 1. **使用配置类自定义 ObjectMapper**:Spring Boot 默认使用的是 Jackson 的 `ObjectMapper`,你可以创建一个配置类,并通过 `@Bean` 注解自定义一个全局的 ObjectMapper。在自定义的 ObjectMapper ,你可以设置一些优化选项,如日期格式化、属性命名策略等,以满足你的需求。 ```java @Configuration public class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); // 设置日期格式化 objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); // 设置属性命名策略 objectMapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); // 可以添加更多的配置 return objectMapper; } } ``` 2. **使用视图类控制输出内容**:如果你只需要输出对象的一部分字段,可以创建一个视图类来控制输出内容。通过 `@JsonView` 注解标记字段,并在需要输出的地方指定视图类,可以避免输出不必要的字段。 ```java public class Views { public static class Public {} public static class Internal extends Public {} } public class MyDto { @JsonView(Views.Public.class) private String publicField; @JsonView(Views.Internal.class) private String internalField; // getters and setters } ``` 3. **使用注解控制序列化和反序列化**:Jackson 提供了许多注解,可以更细粒度地控制序列化和反序列化过程。例如,你可以使用 `@JsonProperty` 注解重命名字段,在需要使用 `@JsonFormat` 注解格式化日期等。 ```java public class MyDto { @JsonProperty("new_name") private String oldName; @JsonFormat(pattern = "yyyy-MM-dd") private Date date; // getters and setters } ``` 4. **使用 Lombok 简化实体类**:如果你使用 Lombok 来简化实体类的编写,可以使用 `@JsonAutoDetect` 注解来指定序列化和反序列化的可见性。这样可以避免生成过多的 getter 和 setter 方法。 ```java @Data @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) public class MyDto { private String field1; private String field2; } ``` 通过以上优化方案,你可以提高 Spring Boot Jackson 的转换性能和灵活性。根据你的实际需求,选择适合的优化方案即可。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值