fastJson和jackson的日期数据处理

news2024/12/23 22:07:11

目录

1.jackson

2.fastjson

3.总结


1.jackson

jackson是spring mvc默认的JSON解析方法,前端的数据序列化处理之后,后端经过反序列化处理可以直接使用实体对象进行接收。后端接口返回实体对象,经过序列化处理后前端可以接收并进行处理。

后端接收前端的日期参数以及后端的日期参数传递给前端,在序列化处理中,需要进行特殊处理。否则后端接收的时间不正确,会多8个小时;前端显示的时间没有被格式化。当然也可以在前端使用一些组件进行特殊处理。这里主要说明如何在后端进行处理。

(1)统一处理

①重写jsckson默认的配置,设置日期的格式
# 因为SpringBoot帮我们配置了JacksonAutoConfiguration,所以我们这边是可以正常返回接口的
# 根据JacksonAutoConfiguration里的代码我们是可以重写ObjectMapper去完成日期的代码格式化
# 在我们了解到JacksonAutoConfiguration类时,我们首先了解到的是JacksonHttpMessageConvertersConfiguration
# 在里面有MappingJackson2HttpMessageConverter,我们去重新定义这个我们也是可以解决的,但是就没有第一种方式比较简便
# 在WebMvcConfig类中我会放上这两种方式的代码,但会注释第二种方式的代码


@Configuration
public class WebMvcConfig {

    //@Bean
    //MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
    //    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    //    ObjectMapper objectMapper = new ObjectMapper();
    //    objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
    //    converter.setObjectMapper(objectMapper);
    //    return converter;
    //}
    @Bean
    ObjectMapper objectMapper(){
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
        return objectMapper;
    }

}

②在配置文件中配置日期格式

spring:
  jackson:
    date-format: yyyy-MM-dd

(2)单独处理

①使用注解方式,在实体类中配置注解,格式需要和前端传递的日期格式一致,否则会报错。

    /**
     * 绑定时间
     */
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createTime;

 因为日期格式的不同,一般使用单独配置的方式,在实体类中添加注解,用于对前端传递的数据进行格式化及时区处理以及对后端的数据进行格式化传递给前端进行显示。

jackson相关的注解如下:

2.fastjson

fastjson是阿里的一款json工具,部分版本存在漏洞,使用时需要注意。

官网:http://code.alibabatech.com/wiki/display/FastJSON/Overview

在日期的格式化方式需要使用JSONField注解进行处理

比如在接口中使用String类型的参数接收前端传递的表单数据,然后再后端使用fastJson进行格式化处理,如果存在日期相关的数据,需要使用JSONfIeld进行处理。

    /**
     * 上传时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date uploadTime;
    /**
     * 发布时间
     */
    @JSONField(format = "yyyy-MM-dd HH:mm")
    private Date releaseTime;

3.总结

springmvc默认将前端数据使用jsckson进行转换,所有涉及到前端日期类型数据的接受以及回传给前端的日期数据,相关的字段要使用jsonformat注解
在代码中使用fastjson进行json格式的转换需要使用JSONField注解进行日期格式的转换,使用jsonformat会报转换失败的错误

com.alibaba.fastjson.JSONException: For input string: "2024-01-10 09:56"

参照 

jackson与fastjson_jackson和fastjson-CSDN博客

SpringBoot中默认的JSON解析方案 日期格式化多种解决方案_json格式化采用默认方式了-CSDN博客

Fastjson JSONField_w3cschool

Java日期格式化(@JsonFormat @JSONField)_jsonfield 格式化时间-CSDN博客 

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

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

相关文章

深度学习:探索人工智能的前沿

1. 引言 1.1 人工智能的演进 人工智能(Artificial Intelligence,简称AI)是一门研究如何使计算机能够执行通常需要人类智能的任务的领域。从早期的符号推理到现代的深度学习,人工智能经历了漫长的发展过程。 20世纪50年代&#xff…

Golang通过Gorm操作Mysql时遇到的datetime时区问题

情景描述 golang使用Gorm操作MySQL,MySQL中数据类型是datetime,Golang中用的是time.now。 但是会导致存储的时间与北京时间有8h误差, 显然是没有初始化时区导致。 问题修复 初始化设置时区 参考我自己之前写过的一篇总结——Mysql中多种日…

Qt应用开发(安卓篇)——Hello Qt On Android

一、前言 这一篇从实际出发,讲述如何创建、编译和部署Qt On Android项目。 二、ADB调试 ADB的全称为Android Debug Bridge,就是起到调试桥的作用,主要用于连接计算机与Android 设备,以便进行调试和数据传输。ADB 可以实现以下主要…

工作中使用Redis10种场景

前言 Redis作为一种优秀的基于key/value的缓存,有非常不错的性能和稳定性,无论是在工作中,还是面试中,都经常会出现。 今天这篇文章就跟大家一起聊聊,我在实际工作中使用Redis的10种场景,希望对你会有所帮…

快速傅里叶变化检测轻微划痕

像这种轻微划痕,普通算法鲁棒性差,通用性也不是很好,通过一些特殊处理,基本上可以满足客户需求. 图像处理,检测无非这个几个步骤. 预处理----分割----筛选—满足设定条件NG read_image (Image, ‘轻微划痕.bmp’) dev_close_window() get_image_size(Image, Width, Height) dev…

HTTPS:如何确保您的网站数据传输安全?

目录 博客前言 一.HTTPS 1.1 HTTPS简介 1.2 HTTP和HTTPS区别 1.3 TLS/SSL协议工作原理 1.3.1 TLS/SSL协议结构 1.3.2 SSL/TLS握手协议建立连接过程 1.2.3 SSL/TLS报文分析 博客前言 以下是一个关于HTTPS协议的博客前言示例: 欢迎来到我的博客,今…

vue 解决el-table 表体数据发生变化时,未重新渲染问题

效果图父组件中数量改变后总数重新计算 子组件完整代码 <template><el-tableshow-summaryref"multipleTable"v-bind"$props"selection-change"handleSelectionChange"row-click"handleRowClick":summary-method"getSum…

20230118-【UNITY 学习】增加攀登系统

替换脚本PlayerMovement_04.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMovement_05 : MonoBehaviour {private float moveSpeed; // 玩家移动速度public float walkSpeed 7; // 行走速度public float sprintSpee…

基于麻雀优化算法SSA的CEEMDAN-BiLSTM-Attention的预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

网络安全 | 苹果承认 GPU 安全漏洞存在,iPhone 12、M2 MacBook Air 等受影响

1 月 17 日消息&#xff0c;苹果公司确认了近期出现的有关 Apple GPU 存在安全漏洞的报告&#xff0c;并承认 iPhone 12 和 M2 MacBook Air 受影响。 该漏洞可能使攻击者窃取由芯片处理的数据&#xff0c;包括与 ChatGPT 的对话内容等隐私信息。 安全研究人员发现&#xff0c;…

论文阅读:Vary论文阅读笔记

目录 引言整体结构图数据集构造Vary-tiny部分Document Data数据构造Chart Data构造Negative natural image选取 Vary-base部分 引言 论文&#xff1a;Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Paper | Github | Demo 许久不精读论文了&#x…

基于Harris角点的多视角图像全景拼接算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 Harris角点检测 4.2 图像配准 4.3 图像变换和拼接 4.4 全景图像优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 function [ImageB…

鸿蒙开发-ArkUI框架实战【日历应用 】

对于刚刚接触OpenHarmony应用开发的开发者&#xff0c;最快的入门方式就是开发一个简单的应用&#xff0c;下面记录了一个日历应用的开发过程&#xff0c;通过日历应用的开发&#xff0c;来熟悉基本图形的绘制&#xff0c;ArkUI的组件的使用&#xff0c;UI组件生命周期&#xf…

新版AndroidStudio dependencyResolutionManagement出错

在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目&#xff1f;那下面这些坑我们就需要来避免了&#xff0c;否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…

什么是SFP光学模块?

SFP光模块是一个十亿位电信号到光信号接口设备&#xff0c;是行业标准的小型可插拔千兆光收发器模块&#xff0c;集成可插拔交换机&#xff0c;路由器和其他网络设备&#xff0c;媒体转换器SFP端口&#xff0c;用于连接到光或铜线数据传输网络&#xff0c;我们通常可以在以太网…

Numpy的学习 第一课 了解以及使用

1.输入模式 1.编辑模式 绿色2.命令模式 蓝色 2.运行 直接输入jupyter notebook 3.文档注释 查看函数帮助文档命令 help(函数) 单问号与多问号 单问号显示文档 多问号显示文档代码 3.shifttab 显示参数 4.运行外部文件 %run 路径,可绝对可相对 这里运行了就相当于方法了,或者…

Python爬虫 - 网易云音乐下载

爬取网易云音乐实战&#xff0c;仅供学习&#xff0c;不可商用&#xff0c;出现问题&#xff0c;概不负责&#xff01; 分为爬取网易云歌单和排行榜单两部分。 因为网页中&#xff0c;只能显示出歌单的前20首歌曲&#xff0c;所以仅支持下载前20首歌曲&#xff08;非VIP音乐&…

Hamcrest断言:自动化测试的利器

Hamcrest断言&#xff1a;自动化测试中的可读性与表达力利器 背景&#xff1a;在软件开发中&#xff0c;自动化测试是确保软件质量和稳定性的重要环节。为了编写可靠且易于维护的自动化测试脚本&#xff0c;我们需要使用可读性强且表达力强的断言工具。Hamcrest是一个优秀的断言…

渗透测试之Hydra如何B破远程主机RDP登录M码

环境: Hydra9.3 KALI2022 问题描述: 渗透测试之hydra如何B破远程主机RDP登录M码 解决方案: Hydra是一款非常强大的网络登录P解工具。它专门用于测试和评估网络安全,通过暴力P解方式尝试多种用户名和密码组合,以获得对受测试系统的非法访问。Hydra支持各种协议的登录破…

21. 合并两个有序链表(Java)

题目描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入&#xff1a; l1 [1,2,4], l2 [1,3,4] 输出&#xff1a; [1,1,2,3,4,4] 代码实现&#xff1a; 结点类&#xff1a; public class ListNode {in…