SpringBoot2.1配置FastJson

使用FastJson处理返回数据,默认不会返回数据为null的属性,这对前端进行编码的时候会造成一些困扰,但是通过配置FastJson可以解决这个困扰。
PS:
1、
@Configuration 该注解使得该类被SpringBoot启动加载
configureMessageConverters 该方法是解析返回数据用到的方法,所以需要重写

通过该类的处理,返回的json数据中如果包含集合为null时将会返回[],属性为null时将会返回""(空字符串)

2、
该类实现了WebMvcConfigurer接口,重写configureMessageConverters方法
不要继承WebMvcConfigurationSupport来处理,会导致跳转视图失败

@Configuration
public class FastJsonConfiguration implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
                // 防止循环引用
      
### Spring Boot Kafka 使用 FastJSON 进行消息序列化 为了实现 Spring Boot 和 Kafka 的集成并使用 FastJSON 来处理消息的序列化和反序列化,可以按照如下方式配置: #### 配置依赖项 首先,在 `pom.xml` 文件中加入必要的 Maven 依赖来支持 Kafka 和 FastJSON。 ```xml <dependencies> <!-- Kafka --> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <!-- Fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> </dependencies> ``` #### 创建自定义序列化器与反序列化器类 接着创建两个 Java 类用于分别完成对象到 JSON 字符串以及相反过程的功能转换。 ```java import com.alibaba.fastjson.JSON; import org.apache.kafka.common.serialization.Deserializer; import java.nio.charset.StandardCharsets; public class FastJsonDeserializer<T> implements Deserializer<T> { private Class<T> typeClass; public void configure(Map<String, ?> configs, boolean isKey) {} @Override public T deserialize(String topic, byte[] data) { if (data == null || data.length == 0){ return null; } String jsonStr = new String(data, StandardCharsets.UTF_8); return JSON.parseObject(jsonStr, this.typeClass); } public void close() {} } ``` ```java import com.alibaba.fastjson.JSONObject; import org.apache.kafka.common.serialization.Serializer; import java.util.Map; public class FastJsonSerializer<T> implements Serializer<T> { @Override public void configure(Map<String, ?> configurations, boolean isKey) {} @Override public byte[] serialize(String topic, T data) { if (null == data) { return null; } else { JSONObject jsonObject = (JSONObject) JSONObject.toJSON(data); return jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8); } } @Override public void close() {} } ``` #### 修改 application.properties 或者 yml 中的相关设置 最后一步是在项目的配置文件里指定这些新的序列化工具给生产者和消费者使用。 对于 `application.yml`: ```yaml spring: kafka: consumer: key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: com.example.FastJsonDeserializer # 替换成实际包名下的路径 producer: key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: com.example.FastJsonSerializer # 同上替换为具体位置 ``` 通过上述操作即可让 Spring Boot 应用程序中的 Kafka 组件能够利用 FastJSON 实现高效的消息体编码解码功能[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hello_world!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值