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);}
}
相关文章:
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.j…...
实验室记账项目(java+Mysql+jdbc)
前言: 因为自己学习能力有限和特殊情况必须要找一个项目来做,但是上网搜的那些项目有两种(一种是技术太多,自己能力不够;一种是技术太少,项目太简单)导致都不适合本人,本人现有技术只…...
spring boot 整合 minio存储 【使用篇】
zi导入依赖 <!--minio--><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.0.3</version></dependency> yml配置(默认配置) spring:# 配置文件上传大小限制s…...
【Redis】深入理解 Redis 常用数据类型源码及底层实现(5.详解List数据结构)
本文是深入理解 Redis 常用数据类型源码及底层实现系列的第5篇~前4篇可移步( ̄∇ ̄)/ 【Redis】深入理解 Redis 常用数据类型源码及底层实现(1.结构与源码概述)-CSDN博客 【Redis】深入理解 Redis 常用数据类型源码及底…...
Vue+Flask电商后台管理系统
在这个项目中,我们将结合Vue.js前端框架和python后端框架Flask,打造一个功能强大、易于使用的电商后台管理系统 项目演示视频: VueFlask项目 目录 前端环境(Vue.js): 后端环境(python-Flask&…...
SpringBoot保姆级入门文档
目录 1、SpringBoot的优点 2、和Spring、SpringMVC的对比 3、Xml 和 JavaConfig 1、SpringBoot的优点 2、和Spring、SpringMVC的对比 3、Xml 和 JavaConfig Spring 使用 Xml 作为容器配置文件,在 3.0 以后加入了 JavaConfig,使用 java 类做配置文件使…...
Springboot同一台服务器部署多个项目,导致redis混淆,如何根据不同项目区分
在Spring Boot应用中,如果在同一台服务器上部署了多个项目,并且每个项目都使用Redis作为缓存或存储,为了避免Redis数据混淆,你需要确保各个项目在访问Redis时使用不同的数据库索引号、键前缀或者连接配置。 以下是一些区分不同项目Redis数据的方法: 使用不同数据库索引:…...
redis启动错误
错误: Creating Server TCP listening socket 127.0.0.1:6379: bind: No error redis-server.exe redis.windows.conf redis-cli.exe shutdown auth "yourpassword"...
单片机烧录方式 -- IAP、ISP和ICP
目录 背景 1 什么是ICP 2 什么是ISP 3 什么是IAP 4 总结 背景 对于51单片机,我们使用STC-ISP上位机软件通过串口进行程序的烧写;对于STM32系列单片机,我们既可以通过串口烧写程序,也能通过JLink或是STLink进行程序的烧写&am…...
数据结构(C语言版)01
//顺序存储 int main(){ int ans[5]{1,1,1,1,3};//定义并初始化 printf("%d",ans[4]); return 0; } //链式存储 Typdef struct Lnode{ElemType data;struct Lnode *next; }Londe,*LinKlist;Londe *L; L(LinkList)malloc(sizeof(Lnode)); A->nextB;B->nextC;…...
Node.js-文件读取输入
Node.js-文件读取输入 fs模块(操作文件的模块) 读取 fs.readFile(path[, options], callback);[]里面 是可选参数,表示以什么样的编码 格式读取path是路径callback表示读取完成后的回调函数 例子 fs.readFile (‘./files/11.txt…...
时隔一年的测评:gpt3.5发展到什么程度了?
名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍1、chatgpt是什么?2、主要特点3、工作原理4、应用限制5、使…...
[RCTF2015]EasySQL1 题目分析与详解
一、题目介绍: 1、题目来源: BUUCTF网址 2、题目介绍: 拿到flag。 二、解题思路: 我们发现题目首页有登录和注册账号两个选项,我们首先尝试注册账号,尝试注册username为admin的账号,输入密码…...
开源的 Python 数据分析库Pandas 简介
阅读本文之前请参阅-----如何系统的自学python Pandas 是一个开源的 Python 数据分析库,它提供了高性能、易用的数据结构和数据分析工具。Pandas 特别适合处理表格数据,例如时间序列数据、异构数据等。以下是对 Pandas 的简明扼要的介绍,包括…...
LeetCode 2125.银行中的激光束数量
银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank ,表示银行的平面图,这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布,由若干 ‘0’ 和若干 ‘1’ 组成。‘0’ 表示单元格是空的࿰…...
【探索AI】Sora - 探索AI视频模型的无限可能
Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。让我们将一起探讨…...
NGINX的重写与反向代理机制解析
目录 引言 一、重写功能 (一)if指令 1.判断访问使用的协议 2.判断文件 (二)return指令 1.设置返回状态码 2.返回指定内容 3.指定URL (三)set指令 1.手动输入变量值 2.调用其它变量值为自定义变…...
JVM的深入理解
1、JVM(Java虚拟机):我们java编译时候,下通过把avac把.java文件转换成.class文件(字节码文件),之后我们通过jvm把字节码文件转换成对应的cpu能识别的机器指令(翻译官角色)…...
JavaWeb——007MYSQL(DQL多表设计)
# 数据库开发-MySQL 一级目录二级目录三级目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 2. 多表设计2.1 一对多2.1.1 表设计2.1.2 外键约束 2.2 一对一2.3 多对多2.4 案…...
深度学习500问——Chapter01:数学基础
文章目录 前言 1.1 向量和矩阵 1.1.1 标量、向量、矩阵、张量之间的联系 1.1.2 张量与矩阵的区别 1.1.3 矩阵和向量相乘结果 1.1.4 向量和矩阵的范数归纳 1.1.5 如何判断一个矩阵为正定 1.2 导数和偏导数 1.2.1 导数偏导计算 1.2.2 导数和偏导数有什么区别 1.3 特征值和特征向量…...
Calibre中文路径保护插件:终极解决方案告别拼音路径困扰
Calibre中文路径保护插件:终极解决方案告别拼音路径困扰 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文(中文)命名 项目地址:…...
别再用Rule-based工具扫LLM生成代码了,SITS2026验证:传统SAST对Copilot产出漏洞检出率仅31.4%,这3个信号必须立即升级
第一章:SITS2026分享:AI代码安全扫描 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026大会上,多家头部安全厂商与开源社区联合发布了新一代AI驱动的代码安全扫描框架——SentryLLM,该框架深度融合大语言模型语义理解能…...
别再只用单一颜色了!ArcGIS地图符号化保姆级教程:从标记、线型到填充,手把手教你做出专业地图
ArcGIS地图符号化实战:从基础操作到视觉叙事的高级技巧 1. 地图符号化的艺术与科学 当我们面对一张城市设施分布图时,第一眼吸引注意力的往往不是数据本身,而是那些跳跃的色彩、精致的图标和流畅的线条。这正是地图符号化的魔力——它将冰冷的…...
别再手动调参了!用Python+K-means为你的YOLOv5/V8数据集自动生成最佳Anchor Boxes
用K-means聚类为YOLO模型自动生成最佳Anchor Boxes的完整实践指南 在目标检测任务中,Anchor Boxes的设计直接影响着模型的检测精度和训练效率。本文将带你从零开始,通过Python实现一个完整的自动化流程,使用K-means聚类算法为你的YOLOv5/v8数…...
mysql如何配置插件以提升查询性能_安装启用memcached插件
MySQL 8.0.29起已彻底移除daemon_memcached插件,因其与InnoDB缓存重叠、维护成本高且功能受限;推荐改用Redis应用层缓存或优化InnoDB配置与SQL索引。memcached插件在 MySQL 8.0 已被移除,无法安装MySQL 官方从 8.0.29 版本起彻底删除了 libme…...
用于分类基于因果性和局部相关性的网络
Causal and Local Correlations Based Network for Multivariate Time Series Classification代码:https://github.com/dumingsen/CaLoNet面向多元时间序列分类(MTSC)的深度学习模型,核心创新是融合因果空间关联 局部时序关联&am…...
推荐系统实时更新
推荐系统实时更新的魅力与挑战 在信息爆炸的时代,推荐系统已成为用户获取内容的核心工具。无论是电商平台的商品推荐,还是短视频平台的个性化内容推送,实时更新的推荐系统正逐渐成为提升用户体验的关键。传统的推荐系统往往基于离线数据训练…...
Outfit字体终极指南:打造品牌视觉一致性的高效方案
Outfit字体终极指南:打造品牌视觉一致性的高效方案 【免费下载链接】Outfit-Fonts The most on-brand typeface 项目地址: https://gitcode.com/gh_mirrors/ou/Outfit-Fonts Outfit字体是一款专为品牌自动化设计的开源几何无衬线字体,提供从Thin(…...
Zotero-OCR插件:3步实现PDF文献智能识别与可搜索文本层添加
Zotero-OCR插件:3步实现PDF文献智能识别与可搜索文本层添加 【免费下载链接】zotero-ocr Zotero Plugin for OCR 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-ocr Zotero-OCR是Zotero文献管理软件的功能扩展插件,专门为PDF文档添加可搜索…...
从双非到东南网安:一名普通考生的备考心路与策略复盘
1. 从迷茫到坚定:我的考研目标选择历程 作为一个双非院校的普通学生,我最初对考研这件事充满了迷茫。记得大三上学期结束时,身边的同学都在讨论考研目标,而我却连考什么专业、什么学校都没想清楚。这种状态持续了整整半年…...
