返回顶部
首页 > 资讯 > 精选 >关于@JSONField和@JsonFormat的使用区别有哪些
  • 154
分享到

关于@JSONField和@JsonFormat的使用区别有哪些

2023-06-25 13:06:14 154人浏览 八月长安
摘要

这篇文章主要介绍“关于@JSONField和@jsonFORMat的使用区别有哪些”,在日常操作中,相信很多人在关于@JSONField和@JsonFormat的使用区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希

这篇文章主要介绍“关于@JSONField和@jsonFORMat的使用区别有哪些”,在日常操作中,相信很多人在关于@JSONField和@JsonFormat的使用区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”关于@JSONField和@JsonFormat的使用区别有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

@JSONField和@JsonFormat的区别

@JSONField是阿里巴巴下fastjson下的,@JsonFormat是jackson下面的。

一、@JSONField的常用方式

1.1、name的用法:

实体类:

package com.xiaobu.entity; import com.alibaba.fastjson.annotation.JSONField;import lombok.Data; import javax.persistence.*;import java.io.Serializable; @Datapublic class Roles implements Serializable {    private static final long serialVersionUID = 5775171105018867238L;     @JSONField(name = "role_id")    @Column(name = "RoleId")    private Integer RoleId;     @JSONField(name = "role_desc")    @Column(name = "RoleDesc")    private String RoleDesc;}

测试类:

    @Test    public void testJSONField(){        Roles roles = new Roles();        roles.setRoleDesc("admin");        roles.setRoleId(8);        String jsonStr=JSONObject.toJSONString(roles);        System.out.println("bean to JSON:"+jsonStr);        //改变json的key为大写        jsonStr = jsonStr.toUpperCase();        System.out.println("需要转换的json:" + jsonStr);        roles = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Roles.class);        System.out.println("RoleDesc:"+roles.getRoleDesc());    }

1.2 format的用法:

实体类:

     @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")    @JSONField(format = "yyyy-MM-dd")    @Column(name="TaskAcceptTime")    private Date TaskAcceptTime;         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")    @JSONField(format = "yyyy-MM-dd")    @Column(name="TaskCompleteTime")    private Date TaskCompleteTime;

测试类:

@Test    public void findByExample() {        Task task = new Task();        task.setTaskId("HYR08274-0804");        Example example = new Example(Task.class);        Example.Criteria criteria = example.createCriteria();        if (StringUtils.isNotBlank(task.getTaskId())) {            criteria.andLike("TaskId", "%" + task.getTaskId() + "%");        }        //TaskAcceptTime=Mon Aug 04 00:00:00 CST 2008,TaskCompleteTime=Fri Nov 07 00:00:00 CST 2008        List<Task> tasks = taskMapper.selectByExample(example);        System.out.println(tasks);        //""taskAcceptTime":"2008-08-04","taskCompleteTime":"2008-11-07"        String fastJsonStr = JSON.toJSONString(tasks);        System.out.println("fastJsonStr = " + fastJsonStr);        ObjectMapper MAPPER = new ObjectMapper();        try {            //""TaskAcceptTime":"2008-08-04","TaskCompleteTime":"2008-11-07 00:00:00"            String ujosn = MAPPER.writeValueAsString(tasks);            System.out.println("ujosn = " + ujosn);        } catch (JsonProcessingException e) {            e.printStackTrace();        }     }

@JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 必须加上时区。

@JSONField(format = "yyyy-MM-dd")

这两个的作用都是格式化日期时间。且只能作用在日期时间上。

补充:前台传后台

@DateTimeFormat(pattern="yyyy-MM-dd")

@JsonFormat与@DateTimeFormat用法及注意事项

@JsonFormat

@JsonFormat ,使用该注解前需要添加 jackson 相关的依赖包

用于服务器传给前端json数据时对Date类型时间进行的格式化

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

pattern就表示需要转变的格式,timezone表示处在的时区(国内是东八区)

因为,jackson在序列化时间时是按照国际标准时间GMT进行格式化的,而在国内默认时区使用的是CST时区,两者相差8小时

如果没有用@JsonFormat 对时间进行格式化,返回给前端的将是一个时间戳。如图所示。

关于@JSONField和@JsonFormat的使用区别有哪些

使用了@JsonFormat之后,时间格式正确显示。如图所示。

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

关于@JSONField和@JsonFormat的使用区别有哪些

注意事项

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

pattern中定义的格式的大小写要注意,不要写错。。。

@DateTimeFormat

@DateTimeFormat是spring的注解,spring工程下不在需要额外引入其他依赖

由于客户端传给服务端的时间参数是字符串类型,如果直接使用java.util.Date下的Date接受的话,会报400的异常(400异常表示服务器不处理该请求,多半是传入的参数问题)

关于@JSONField和@JsonFormat的使用区别有哪些

可以使用@DateTimeFormat将客户端发送过来的时间参数转换成想要的类型

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

pattern定义需要转换的格式(跟前面一样。大小写需要严格定义)

这样

关于@JSONField和@JsonFormat的使用区别有哪些

服务端就可以正确接收,打印的时间参数为

Mon Apr 01 16:26:25 CST 2019

注意:@JsonFormat与@DateTimeFormat只是定义时间参数在客户端和服务端之间转换格式,控制台、Debug显示的还是java.util.Date下的Date类型形式,如果想要转换的话可以自己使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

一些特殊情况

如果使用pattern = "yyyy-MM-dd"接收上述客户端的参数

关于@JSONField和@JsonFormat的使用区别有哪些

@DateTimeFormat(pattern = "yyyy-MM-dd")

这样也能正确接收到,但是会将时分秒全部置为00

Mon Apr 01 00:00:00 CST 2019

如果使用pattern = "yyyy-MM-dd HH:mm:ss"接收客户端传来的没有时分秒的参数

关于@JSONField和@JsonFormat的使用区别有哪些

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

会报400异常!

到此,关于“关于@JSONField和@JsonFormat的使用区别有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 关于@JSONField和@JsonFormat的使用区别有哪些

本文链接: https://lsjlt.com/news/304968.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 关于@JSONField和@JsonFormat的使用区别有哪些
    这篇文章主要介绍“关于@JSONField和@JsonFormat的使用区别有哪些”,在日常操作中,相信很多人在关于@JSONField和@JsonFormat的使用区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-25
  • 关于@JSONField和@JsonFormat的使用区别说明
    目录@JSONField和@JsonFormat的区别一、@JSONField的常用方式@JsonFormat与@DateTimeFormat用法及注意事项@JsonFormat@D...
    99+
    2024-04-02
  • 关于@JsonProperty和@JSONField注解的区别及用法
    目录@JsonProperty和@JSONField注解区别及用法1. 目的2. 区别jsonField和jsonProperty注解的坑@JSONField@JSONPropert...
    99+
    2024-04-02
  • Python和Go的关键区别有哪些
    这篇文章主要介绍“Python和Go的关键区别有哪些”,在日常操作中,相信很多人在Python和Go的关键区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python和Go的关键区别有哪些”的疑惑有所...
    99+
    2023-06-16
  • 使用Git和SVN的区别有哪些
    这篇文章主要介绍“使用Git和SVN的区别有哪些”,在日常操作中,相信很多人在使用Git和SVN的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用Git和SVN的...
    99+
    2024-04-02
  • PHP5和PHP7之间有哪些关于获取函数的区别
    这篇文章主要讲解了“PHP5和PHP7之间有哪些关于获取函数的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5和PHP7之间有哪些关于获取函数的区别”吧!在 PHP5 和 PHP7...
    99+
    2023-06-25
  • 关于SonarQube社区版使用问题有哪些
    本篇内容主要讲解“关于SonarQube社区版使用问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于SonarQube社区版使用问题有哪些”吧!&nb...
    99+
    2024-04-02
  • oracle和mysql关于关联更新的差别有哪些
    这期内容当中小编将会给大家带来有关oracle和mysql关于关联更新的差别有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 mysql报错 ERROR 1093 ...
    99+
    2024-04-02
  • php=== 和==的区别有哪些
    这篇文章主要介绍“php === 和==的区别有哪些”,在日常操作中,相信很多人在php === 和==的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php === 和==的区别有哪些”的疑惑有所...
    99+
    2023-06-25
  • 关于ObjectUtils.isEmpty() 和 null 的区别
    目录ObjectUtils.isEmpty()和null区别分配内存和赋值的区别Spring5.3之后StringUtils.isEmpty被弃用解决办法ObjectUtils.is...
    99+
    2024-04-02
  • 关于prop和props的区别
    在React中,prop是component的属性,它是一个对象,用于从父组件向子组件传递数据。prop是component的一个只...
    99+
    2023-08-19
    区别
  • 基于Python函数和方法的区别有哪些
    这篇文章给大家分享的是有关基于Python函数和方法的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简单总结:与类和实例无绑定关系的function都属于函数(function);与类和实例有绑定关系的...
    99+
    2023-06-14
  • 关于sql和mysql对于别名不能调用的理解有哪些
    本篇文章为大家展示了关于sql和mysql对于别名不能调用的理解有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在写sql的时候,由于有部分语句别名不能调用,百...
    99+
    2024-04-02
  • Qt4和Qt5的信号和槽的使用区别有哪些
    这篇文章将为大家详细讲解有关Qt4和Qt5的信号和槽的使用区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。目录信号和槽的 connect信号和槽的 disconnect简 述: Qt4 和 Qt5...
    99+
    2023-06-20
  • break和continue的作用和区别有哪些
    今天小编给大家分享一下break和continue的作用和区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。break...
    99+
    2023-07-05
  • c#和java的区别有哪些
    Java和C#都是编程的语言,它们是两个不同方向的两种语言。相同点:他们都是面向对象的语言,也就是说,它们都能实现面向对象的思想(封装、继承、多态)。区别:1.c#中的命名空间是namespace类似于Java中的package(包),在J...
    99+
    2021-05-04
    java教程 c# java 区别
  • java ==和equals的区别有哪些
    总结的来说:(1)对于==,比较的是值是否相等;如果作用于基本数据类型的变量,则直接比较其存储的“值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。(2)对于equals方法,注意:equals方法不能作用于基本数据类型...
    99+
    2020-10-25
    java入门 java == equals 区别
  • MyISAM 和 InnoDB 的区别有哪些?
    区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2....
    99+
    2024-04-02
  • redis和session的区别有哪些
    这篇文章主要介绍redis和session的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!           ...
    99+
    2024-04-02
  • redis和kafka的区别有哪些
    这篇文章给大家分享的是有关redis和kafka的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 Kafka与Redis PUB/SUB之间较大的区别在于Ka...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作