Fastjson大对象64M报错try enabling LargeObject feature instead

错误代码:

源码分析:

第一步:

这里默认64M

第二步:

进入如下方法打断点:

第三步:

找到大字符串对象,进入断点:

第四步:

如下计算容量,进行比较:

第五步(重点):

这里拿字符串的长度与64M的数组大小进行比较,超过大小而报错。

解决:

注意导包,fastjson2的。

总结:

1. 可能字符串的大小没有64M,但是他的长度也比默认64M的数组大小要大,也会报错。

### 关于 FastJSON RedisSerializer 反序列化错误解决方案 当使用 FastJSON 作为 `RedisTemplate` 的序列化器时,可能会遇到反序列化的异常情况。这通常是因为对象在存储到 Redis 中之前未按照预期的方式进行序列化,或者读取的对象类型与实际存储的数据类型不符。 为了处理此类问题,可以采取以下措施: #### 修改配置类以适配FastJSON序列化方式 确保应用程序上下文中定义了正确的序列化策略。下面是一个基于 Spring Boot 应用程序的例子,在其中指定了如何自定义 `StringRedisTemplate` 和通用类型的 `RedisTemplate` 使用 FastJSON 进行序列化/反序列化操作[^1]。 ```java import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); // 设置键(key)的序列化采用 StringRedisSerializer 方式 template.setKeySerializer(new StringRedisSerializer()); // 设置值(value)的序列化采用 FastJsonRedisSerializer 方式 FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); template.setValueSerializer(fastJsonRedisSerializer); template.setHashValueSerializer(fastJsonRedisSerializer); template.afterPropertiesSet(); return template; } } ``` #### 处理特定实体类的字段映射关系 对于某些复杂场景下可能出现的特殊字符转义等问题,则可以通过调整 JSON 转换规则来规避潜在风险。例如设置日期格式、忽略空属性等参数选项,从而提高兼容性和稳定性[^2]。 ```properties # application.properties 或者 yml 文件中添加如下配置项 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 spring.jackson.default-property-inclusion=non_null ``` 另外值得注意的是,虽然上述方法能够有效缓解大部分情况下由于序列化引起的异常现象,但在生产环境中仍需谨慎评估业务需求并选择合适的消息中间件产品,因为像 Kafka、RabbitMQ 等专门设计用于消息传递的服务往往具备更完善的功能特性以及更高的可靠性保障[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

diudiu9628

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

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

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

打赏作者

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

抵扣说明:

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

余额充值