SpringBoot - 后端数据返回前端各个数据类型全局格式化

全局配置

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.math.BigDecimal;
import java.time.LocalDateTime;/*** @author Lux Sun* @date 2023/8/27*/
@Configuration
public class MyObjectMapperConfig {@Beanpublic ObjectMapper objectMapper() {ObjectMapper objectMapper = new ObjectMapper();// 设置序列化时忽略为null的字段objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);// 注册自定义的BigDecimalSerializerobjectMapper.registerModule(new SimpleModule().addSerializer(BigDecimal.class, new BigDecimalSerializerConfig()).addSerializer(LocalDateTime.class, new LocalDateTimeSerializerConfig()));return objectMapper;}
}

BigDecimal 数据类型

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.szqy.common.domain.basic.OpenTime;
import java.io.IOException;
import java.math.BigDecimal;public class BigDecimalSerializerConfig extends JsonSerializer<BigDecimal> {@Overridepublic void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {if (value != null) {// 设置保留两位小数,并保留末尾的".00"Object currentValue = gen.getCurrentValue();String formattedValue = value.setScale(2, BigDecimal.ROUND_HALF_UP).toString();if (currentValue instanceof OpenTime) {// 设置保留两位小数,并去除末尾的".00"formattedValue = value.setScale(2, BigDecimal.ROUND_HALF_UP).stripTrailingZeros().toPlainString();}gen.writeString(formattedValue);}}
}

LocalDateTime 数据类型

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;public class LocalDateTimeSerializerConfig extends JsonSerializer<LocalDateTime> {private final DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");@Overridepublic void serialize(LocalDateTime dateTime, JsonGenerator generator, SerializerProvider sp)throws IOException {String formattedDateTime = dateTime.format(dateTimeFormat);generator.writeString(formattedDateTime);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[RCTF2015]EasySQL1 题目分析与详解

一、题目介绍&#xff1a; 1、题目来源&#xff1a; BUUCTF网址 2、题目介绍&#xff1a; 拿到flag。 二、解题思路&#xff1a; 我们发现题目首页有登录和注册账号两个选项&#xff0c;我们首先尝试注册账号&#xff0c;尝试注册username为admin的账号&#xff0c;输入密码…

前端Vue篇之什么是 mixin ?mixin 和 mixins 区别

目录 什么是 mixin &#xff1f;案例参考总结 mixin 和 mixins 区别mixin 和 mixins 的区别案例参考总结 什么是 mixin &#xff1f; Mixin 是一种在 Vue.js 中用来复用组件选项的一种方式。通过 mixin&#xff0c;我们可以将一组组件选项对象合并到另一个组件的选项对象中&am…

如何更改虚拟机服务端口

如何更改虚拟机服务端口 背景internet information services开启/安装 IIS打开IIS管理器 修改端口 背景 今天我们来讲一下如何更改我们服务所占用的端口号&#xff0c;假设我们在虚拟机或者本地计算机上部署了一个服务&#xff0c;然后这个服务呢&#xff0c;我们默认安装了&a…

一番赏小程序开发,提升用户体量,增加收益

随着我国年轻人逐渐成为消费主力军&#xff0c;盲盒一番赏迅速迎来高速发展期&#xff0c;一番赏的市场规模也迅速扩大。 在互联网的支持下&#xff0c;当下国内形成了线上消费热潮&#xff0c; 一番赏开启了线上抽赏&#xff0c;衍生出了线上一番赏小程序&#xff0c;这让更多…

快速掌握MySql的常用基本操作

MySql 基本操作 一、MySql的数据类型二、MySql运算符三、MySql常用函数四、MySql完整性约束五、MySql核心操作&#xff08;库、表、CRUD、连接&#xff09;库操作表操作CRUD通过存储过程生成大量测试数据连接查询 一、MySql的数据类型 整数类型字节最小值最大值TINGINT1有符号…

redis 缓存穿透,缓存击穿,缓存雪崩

缓存穿透&#xff0c;就是用户想要查询一个数据&#xff0c;在 redis 中查询不到&#xff0c;即没有在缓存中命中&#xff0c;那么就会直接去持久化的 mysql 中进行查询&#xff0c;发现也没有这个数据&#xff0c;那么本次查询就失败了 当用户巨多的时候&#xff0c;查询缓存都…

白酒:生产过程的可追溯性与质量控制

在豪迈白酒的生产过程中&#xff0c;可追溯性与质量控制是确保产品安全与品质的重要手段。随着消费者对食品安全与质量的关注度不断提高&#xff0c;建立多方的可追溯体系和严格的质量控制措施成为了酒庄的必然选择。 首先&#xff0c;可追溯性是指从原材料到产品的整个生产过程…

electron安装最后一部卡住了?

控制台如下错误 不是的话基本可以划走了 这个很可能是镜像出现问题了&#xff0c;不一定是npm镜像 打开npm的配置文件添加下述 electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-build…

vscode 设置打开终端的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode&#xff0c;打开设置UI 或是设置JSON文件&#xff0c;找到相关设置项方式1&#xff1a;通过打开settings.json的UI界面 设置:方式2&#xff1a;通过打开设置settings.j…

深入理解网络通信基本原理和tcp/ip协议

深入理解网络通信基本原理和tcp/ip协议 一、计算机网络体系1&#xff0c;计算机网络体系结构2&#xff0c;网络中数据传输2.1&#xff0c;浏览器中输入一个url的执行流程2.2&#xff0c;数据在网络中是的传输流程 3&#xff0c;三次握手和四次挥手3.1&#xff0c;三次握手3.1.1…

【外设篇】-显示器

显示屏是一种电光转换工具&#xff0c;现在市面上的显示器都是LCD&#xff08;Liquid Crystal Display&#xff0c;液晶显示器&#xff09; 显示器参数介绍 对比度 是指画面黑与白的比值&#xff0c;对比度越高能使色彩表现越丰富&#xff0c;对比度越高&#xff0c;显示器的…

leetcode 2581. 统计可能的树根数目【换根dp】

原题链接&#xff1a;2581. 统计可能的树根数目 题目描述&#xff1a; Alice 有一棵 n 个节点的树&#xff0c;节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges 表示&#xff0c;其中 edges[i] [ai, bi] &#xff0c;表示树中节点 ai 和 bi 之间有一条边…

【appium】Hybrid应用自动化|微信小程序自动化

目录 一、Hybrid&#xff08;nativewebview&#xff09;应用自动化 1、webview 2、Hybrid应用自动化实现 2.1准备工作 Step1&#xff1a;准备android 4.4版本以上的手机/模拟器 Step2&#xff1a;在app源码中将webview调试模式打开 Step3&#xff1a;安装UC开发者工具 U…

4_相机透镜畸变

理论上讲&#xff0c;是可能定义一种透镜而不引入任何畸变的。然而现实世界没有完美的透镜。这主要是制造上的原因&#xff0c;因为制作一个“球形”透镜比制作一个数学上理想的透镜更容易。而且从机械方面也很难把透镜和成像仪保持平行。下面主要描述两种主要的透镜畸变并为他…

ICVQUANTUMCHINA报告:《2024全球量子计算产业发展展望》

2月20日&#xff0c;《2024量子计算产业发展展望》的中文版报告通过光子盒官方平台发布&#xff0c;英文版报告通过ICV官方平台发布。 英文版报告获取地址&#xff1a; https://www.icvtank.com/newsinfo/897610.html 在过去的一年里&#xff0c;光子盒与您一同见证了全球量子…

android系统开发工具,看这篇文章准没错

开头 作为一个40的人&#xff0c;能有面试机会是格外的珍惜&#xff0c;也分外的诚恳。没什么豪言壮语&#xff0c;雄心大志。没有狼性&#xff0c;社会把中年人打磨成了听话的舔狗。 感谢马爸爸旗下公司&#xff0c;给了我为数不多机会中一个&#xff0c;而且还是个相当好的…

10 款最佳硬盘分区软件知识分享(2024更新)

硬盘分区软件是您当前需要的最重要的软件之一。我们知道&#xff01; 当今的硬盘分区软件具有令人难以置信的多功能性&#xff0c;并且由于激烈的竞争&#xff0c;对于大多数人来说仍然是相对低成本的投资。 目前&#xff0c;市场上有数十种硬盘分区软件可供选择 - 找到 2024…

力扣-移除元素

问题 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长…

进销存是什么意思?如何开发一款进销存管理系统?

这篇给大家详细介绍一下&#xff0c;进销存到底是什么&#xff0c;进销存管理系统有什么用&#xff1f;企业如何开发一款进销存管理系统&#xff1f; 以下内容示例工具均来自于JDY——https://www.jiandaoyun.com 一、进销存是什么&#xff1f; 1、基本概念 进销存&#xff0…

HarmonyOS开发云工程与开发云函数

创建函数 您可直接在DevEco Studio创建函数、编写函数业务代码、为函数配置调用触发器。 1.右击“cloudfunctions”目录&#xff0c;选择“New > Cloud Function”。 2.输入函数名称后&#xff0c;点击“OK”。 函数名称仅支持小写英文字母、数字、中划线&#xff08;-&a…