Jackson序列化json时null转成空串或空对象

在项目中可能会遇到需要将null转"",可以通过以下方法解决。

一:添加JacksonConfig 配置

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

import java.io.IOException;

@Configuration
public class JacksonConfig {

@Bean
@Primary
@ConditionalOnMissingBean(ObjectMapper.class)
public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) {
ObjectMapper objectMapper = builder.createXmlMapper(false).build();
// 关键代码-解决No serializer found for class java.lang.Object异常
objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
//关键代码-将null转为空字符串、空对象
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
@Override
public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString("");//空串
//jsonGenerator.writeObject(new Object());//空对象
}
});
return objectMapper;
}

}

二、注意

1、关键代码分析

objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)

此行代码的作用是解决下面的异常:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.lang.Object and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: cloudpc.datasource.common.response.Result["data"])

2、 @ConditionalOnMissingBean

它是修饰bean的一个注解,主要实现的是,当你的bean被注册之后,如果而注册相同类型的bean,就不会成功,它会保证你的bean只有一个,即你的实例只有一个,当你注册多个相同的bean时,会出现异常,以此来告诉开发人员。

一般来说,对于自定义的配置类,我们应该加上@ConditionalOnMissingBean注解,以避免多个配置同时注入的风险。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用三元表达式或者逻辑或运算符来将 null 转成空串: ```javascript let str = null; // 使用三元表达式 str = str ? str : ''; // 使用逻辑或运算符 str = str || ''; ``` 这两种方法都会先判断 str 是否为真,如果 str 为 null、undefined、false、0、NaN 或空串,则返回空串。如果 str 是一个非空字符串,则返回原字符串。 ### 回答2: 在JavaScript中,将null换为空字符串的方法有很多种。下面我将介绍两种常用的方法。 方法一:使用条件运算符 ```javascript var value = null; var result = value ? value : ''; console.log(result); // 输出:'' ``` 这种方法利用了条件运算符(也称为三元运算符)的特性,如果value的值为真,则返回value;如果value的值为假(包括null、undefined、false、0和空字符串等),则返回空字符串。 方法二:使用逻辑或运算符 ```javascript var value = null; var result = value || ''; console.log(result); // 输出:'' ``` 这种方法利用了逻辑或运算符的特性,如果value的值为真,则返回value;如果value的值为假,则返回空字符串。由于null被视为假值,所以当value为null,逻辑或运算符会返回空字符串。 需要注意的是,以上两种方法都是针对null值进行换的,不适用于其他假值(如undefined、false、0和空字符串等)。如果需要将其他假值换为空字符串,可以使用相同的方法。 ### 回答3: 在JavaScript中,我们可以通过几种不同的方法将null换为空字符串。下面我将向你展示一种常见的方法。 最常用的方法是使用条件(if)语句来检查值是否为null,然后将其成空字符串。下面是一个示例代码: ```javascript let value = null; // 定义一个值为null的变量 if (value === null) { // 使用条件语句检查值是否为null value = ''; // 如果值为null,则将其成空字符串 } console.log(value); // 输出结果为 '' ``` 在这个示例中,我们创建了一个名为value的变量,并将其赋值为null。然后我们使用条件语句(if语句)来检查value的值是否为null。如果它是null,我们将其成空字符串''。 这种方法非常简单而且易于理解。但请注意,这只适用于将null换为字符串。如果你需要将其他类型的值成空字符串,你可能需要使用不同的方法。 希望这个回答对你有所帮助!如果你还有其他问题,请随提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨两点钟同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值