基于@JsonFormat的导包问题

@JsonFormat导包问题

@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以该格式注入格式
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")//输出格式
private Date birthday;//出生日期',

在后台像前台传参数时,日期没有格式化,网上搜索了,输出用@JsonFormat但是没说用哪个包

下面是我脱坑之路:

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
<!-- JSON: jackson -->
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <version>1.9.12</version>
</dependency>
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-lgpl</artifactId>
  <version>1.9.12</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.0</version>
</dependency>

问题补充:

我想要的是返回给前台的时间已经格式化,然而上面并没有解决我的问题于是:

方法如下:

单独写一个处理类继承JsonSerializer

package com.szch.aspect;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
 * 格式化Response时间格式
 * 在springmvc返回json数据的时候默认日期字段显示的是long类型的时间戳
 * 如果想要返回格式化的日期如:yyyy-MM-dd这种格式的需要进行出现
 */
public class CustomDateSerializer extends JsonSerializer<Date> {
    public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException{
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            jsonGenerator.writeString(sdf.format(value));
    }
}

在实体类的属性字段上添加@JsonSerialize注解

@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以该格式注入格式
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")//输出格式
@JsonSerialize(using = CustomDateSerializer.class)
private Date lastLogin;//最后登录时间',

结果OK了,postman返回~

使用@JsonFormat注解踩过的坑

一、背景描述

项目技术栈:

Spring boot(2.1.6.RELEASE)+ JDK(1.8)+ Maven(apache-maven-3.5.4)+ Mybatis-plus(3.4.0)

最近在做一个项目系统时,需要Java后端给前端页面返回时间(要用本地时间--北京时间),后端时间字段映射,转换,不管怎么处理都是按照北京时间来的,这个是正确的。但是只要一到前端显示的时候,就会比北京时间少8个小时。

检查各个可能出错的地方之后,感觉代码写的没有问题。但前端显示还是少8个小时,那肯定还是有问题的,找吧。我的实体类如下:请注意被红框圈住的 timezone = "GMT + 8"。后面会用到哦。

二、错误原因

这也是我的一个习惯导致的,被红框圈住的 timezone = "GMT + 8" 中间的加号两边各有一个有空格,然后序列化的时候没有被识别这个时区。所以就导致传给前端显示的时候少了8个小时,具体的可以看下图所示。

三、解决方案

知道问题的原因之后,改这个问题就易如反掌了,把中间的空格删除即可。如下图所示。

再次测试,搞定。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详谈fastjson将对象格式化成json时的两个问题

     1. 关于继承 类的继承结构为 class Base{ private int id; public Long getId() { return id; } public void setId(Long id) { this.id = id; } } class User extends Base{ private String name; public String getName() { return name; } public void setName(String name) { t

  • 解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    有时在Spring MVC中返回JSON格式的response的时候会使用@ResponseBody注解,不过在处理java8中时间的时候会很麻烦,一般我们使用的HTTPMessageConverter是MappingJackson2HttpMessageConverter,它默认返回的时间格式是这种: "startDate" : { "year" : 2010, "month" : "JANUARY", "dayO

  • Java对象转json JsonFormat注解

    写在前面,首先,我用的java转json序列化的工具是java开源的jackson. 今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到了问题所在,先上代码 public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId;

  • JsonFormat与@DateTimeFormat注解实例解析

    这篇文章主要介绍了JsonFormat与@DateTimeFormat注解实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景:从数据库获取时间传到前端进行展示的时候,我们有时候可能无法得到一个满意的时间格式的时间日期,在数据库中显示的是正确的时间格式,获取出来却变成了很丑的时间戳,@JsonFormat注解很好的解决了这个问题,我们通过使用@JsonFormat可以很好的解决:后台到前台时间格式保持一致的问题,其次,另一个问题是,我们

  • 基于@JsonFormat的导包问题

    @JsonFormat导包问题 @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")//注解可以以该格式注入格式 @JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")//输出格式 private Date birthday;//出生日期', 在后台像前台传参数时,日期没有格式化,网上搜索了,

  • Springmvc基于fastjson实现导包及配置文件

    1.导包 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency> 2.配置文件 <mv

  • 实现Android studio设置自动导包及自动导包快捷键

    实现Android studio设置自动导包及自动导包快捷键 方式一:Android studio只有导单个包的快捷键:Alt+Enter. 方式二:设置自动导所有的包 点击File→Setting,Setting→Editor→General→Auto Import,勾选Add unambiguous imports on the fly即可自动导包,点击apply→OK 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 基于TCP通信丢包原因总结(推荐)

    公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了--关于TCP掉包的问题,TCP是基于不可靠的网络实现可靠的传输,肯定也会存在掉包的情况. 如果通信中发现缺少数据或者丢包,那么,最大的可能在于程序发送的过程或者接收的过程出现问题. 例如服务器给客户端发大量数据,Send的频率很高,那么就有可能在Send时发生错误(原因可能是又多种,可能是程序处理逻辑问题,多线程同步问题,缓冲区溢出问题等等),如果没有对Send失败做处理

  • Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法

    本文实例讲述了Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法.分享给大家供大家参考,具体如下: 1.简介 本扩展包添加了两个视图相关的Artisan命令到Laravel应用,以便我们通过Artisan命令即可创建和管理视图文件,可谓是进一步解放了生产力. 2.安装 还是通过Composer安装: composer require sven/artisan-view 安装完成后到config/app.php中注册服务提供者ArtisanViewServiceProv

  • 浅谈python编译pyc工程--导包问题解决

    利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还能和py文件一样可运行 import compileall compileall.compile_dir(r'/path') 所以在一些情况下,需将源文件工程批量生成pyc文件来隐藏代码. 上面代码即为 批量生成pyc的脚本更改path路径为根目录即可(根目录为最顶层目录需包括所有用到的文件) 运行

  • python导包的几种方法(自定义包的生成以及导入详解)

    python是一门灵活的语言,也可以说python是一门胶水语言,顾名思义,就是其可以导入各类的包,python的包可以说是所有语言中最多的.当然导入包大部分是为了更快捷,更方便,效率更高.对于刚入门的python爱好者来说最初接触的应该是import直接导入包的方式,例如 import time,就是导入了python的time包,这个包中的方法可以处理大部分我们项目中遇到的关于时间的问题. 下面我会详细介绍几种导入包的方式(在开发过程中绝对够用)以及怎样把其他文件夹中的python模块生成我

  • 浅谈Python脚本开头及导包注释自动添加方法

    1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来说明脚本语言是python的 是要用/usr/bin下面的程序(工具)python,这个解释器,来解释python脚本,来运行python脚本的. #!/usr/bin/python:是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器: #!/usr/bin/env python(推荐):这种用法是为了防止操作系

  • IntelliJ IDEA2020.1版本更新pom文件自动导包的方法

    在2020.1.1版本之前IDEA pom文件导包是这样的 最近新装新版本IDEA之后,这个图标没有了,对于习惯旧操作没有图标了还真不习惯.就去idea官网查了下新版本maven更新 官网对于更新说明百度翻译了下. 百度翻译(图不清楚我贴字) Maven and Gradle importing updates IntelliJ IDEA 2020.1 brings a small but important update to our Maven and Gradle users. Inste

  • 解决IDEA 2020.1版本 maven Test命令出现导包错误的问题

    idea的maven快捷面板中test可以正常运行,但不能直接在@Test注解的方法前点击运行 会出现各种找不到包的报错: 解决办法: 1.clean命令清除target文件夹 2.删掉根目录的xxx.iml.xxx.ipr.xxx.iws 3.File>Settings>Build,Execution,Deploment>Build Tools>Maven 给Work offline打上勾 或者在maven快捷面板上激活Toggle Offline Mode 4.右键项目>

随机推荐