Java - Fastjson 序列化/反序列化之『科学计数法』解决方案

问题描述

这次是在 Kafka 消费者 @Payload 发现消息被反序列化的时候,浮点数类型,准确来说这里指的是 Double 类型,比如:123456792(1.23456792E8)

原因分析

经过排查发现,想直接解决 Kafka @Payload 根本问题还是比较难,如果有大佬发现可以评论哈~

所以只能在后面做数据加工处理,但也没那么简单,因为直接对 Double 可用的解决科学计数法没找到,只有 BIgDecimal 的。

解决方案

java 复制代码
/**
 * 处理 JSON 特性
 * - 科学计数法
 * @param object
 * @return
 */
public static Object evalJson(Object object) {
	String jsonString = JSON.toJSONString(object);
	JSONObject jsonObject = JSON.parseObject(jsonString);

    # 为什么要多做一次上面的序列化、反序列化呢? 因为先把 Double 类型转化为 BigDecimal 为下面可以利用 BigDecimal 特性做准备
	jsonString = JSON.toJSONString(jsonObject, SerializerFeature.WriteBigDecimalAsPlain);

	return JSON.parseObject(jsonString);
}

Ps:网上很多都是在啥实体类上加注解,那个当然可以理解,问题是 JSON 有时候面向更多的是临时动态对象,哪来的固定字段加呀~ 所以那些方法我就不重复轮子了,主要提供下针对全局解决这个问题的思路

相关推荐
毕设源码-赖学姐7 小时前
【开题答辩全过程】以 法院信访投诉平台为例,包含答辩的问题和答案
java·eclipse
依_旧7 小时前
MySQL下载安装配置(超级超级入门级)
java·后端
淘源码d7 小时前
什么是医院随访系统?成熟在用的智慧随访系统源码
java·spring boot·后端·开源·源码·随访系统·随访系统框架
程序猿阿越8 小时前
Kafka源码(七)事务消息
java·后端·源码阅读
m0_748248028 小时前
C++20 协程:在 AI 推理引擎中的深度应用
java·c++·人工智能·c++20
笑我归无处8 小时前
强引用、软引用、弱引用、虚引用详解
java·开发语言·jvm
02苏_8 小时前
秋招Java面
java·开发语言
爱吃甜品的糯米团子8 小时前
详解 JavaScript 内置对象与包装类型:方法、案例与实战
java·开发语言·javascript
程序定小飞9 小时前
基于springboot的学院班级回忆录的设计与实现
java·vue.js·spring boot·后端·spring
攀小黑9 小时前
基于若依-内容管理动态修改,通过路由字典配置动态管理
java·vue.js·spring boot·前端框架·ruoyi