Java项目使用JSON处理中文乱码和Date格式

news/2024/10/23 9:21:18/

JSON中文乱码

如果出现乱码,我们需要设置他的编码格式为utf-8,以及它返回的类型,通过@RequesMapping的produces属性来实现,代码如下

produces:指定响应体返回类型和编码

JSON处理Date格式

@RequestMapping(value = "/date1" )@ResponseBodypublic String date1() throws JsonProcessingException {//声明时间日期 注意是util下的Date date = new Date();//打印默认时间日期格式  Tue Feb 08 21:36:27 CST 2022System.out.println(date);//发现问题  时间默认返回的json字符串变成了时间戳类型的格式 Timestamp 1644327387386return   new ObjectMapper().writeValueAsString(date);}

发现问题:时间默认返回的json字符串变成了时间戳类型的格式 Timestamp 1644327387386

处理问题:如何让它不返回时间戳?如何时间格式化问题

//关闭ObjectMapper的时间戳功能 通过objectMapper的configure方法关闭时间戳功能

**ObjectMapper objectMapper=new ObjectMapper();

objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);

**SimpleDateFormat simpleDateFormat = new SimpleDateFormat( “yyyy-MM-dd HH:mm:ss” );

**objectMapper.setDateFormat(simpleDateFormat);

@RequestMapping(value = "/date2" )@ResponseBodypublic String date2() throws JsonProcessingException {//1 如何让它不返回时间戳?   通过objectMapper的configure方法关闭时间戳功能ObjectMapper objectMapper=new ObjectMapper();objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);//2 时间格式化问题 自定义日期格式对象SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );//3 让objectMapper指定日期格式为simpleDateFormatobjectMapper.setDateFormat(simpleDateFormat);//声明DateDate date = new Date();//格式化日期并输出System.out.println(simpleDateFormat.format(date));//2022-02-08 22:01:12return objectMapper.writeValueAsString(date);//"2022-02-08 22:01:12"}

封装JSON工具日期转化工具类

上述代码冗余 我们把公共代码提取出来进行封装成工具类,下次使用直接调用即可

工具类和公共方法

package com.wyh.util;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SerializationFeature;import java.util.Date;import java.text.SimpleDateFormat;/***  @program:  SpringBoot-Ajax-JSON*  @description:  JSON日期格式化封装类*  @author:  魏一鹤*  @createDate:  2022-02-08 22:07**/public class JSONDateUtil {//重载 把时间戳也进行封装//如果没有自定义时间格式的话就使用我们默认的yyyy-MM-dd HH:mm:ss"//如果调用方法在参数列表指明了自定义时间格式的话就使用参数列表的时间格式public static String JSONFormatDateUtil(Object object){return JSONFormatDateUtil(object, "yyyy-MM-dd HH:mm:ss" );}// JSON转换日期的公共方法,直接传递Date类型的参数使用ObjectMapper进行处理 需要抛出异常 得到格式化好之后的json日期类型// 把方法用static进行修饰是为了不用创建工具类对象就能直接通过“.”进行公共方法的调用public static String JSONFormatDateUtil(Object object,String dateFormat){//1 创建ObjectMapper工具类ObjectMapper objectMapper=new ObjectMapper();//2 通过ObjectMapper类的configure方法关闭时间戳功能objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);//3 创建时间格式化SimpleDateFormat类 自定义日期格式对象SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);//4 把自定义格式化好之后的日期类型给objectMapper的setDateFormat去用,用来转换时间格式objectMapper.setDateFormat(simpleDateFormat);//5 json转换时间格式得到json字符串日期类型//封装的时候尽量不要抛异常而是捕获异常 不然每次调用这个方法都要在其他地方进行抛异常String JSONDate = null;try {JSONDate = objectMapper.writeValueAsString(object);} catch (JsonProcessingException e) {e.printStackTrace();}//6 返回最终处理好的json字符串日期类型return JSONDate;}}

使用工具类和公共方法

注意观察JSONDateUtil.JSONFormatDateUtil()的参数列表和返回的格式

//使用工具类和公共方法@RequestMapping(value = "/date3" )@ResponseBodypublic String date3()  {//声明DateDate date = new Date();//使用工具类的公共方法把date进行传参转换格式String JSONDate = JSONDateUtil.JSONFormatDateUtil(date);//返回json日期类型return JSONDate; //"2022-02-08 22:31:11"}}//使用工具类@RequestMapping(value = "/date3" )@ResponseBodypublic String date3()  {//声明DateDate date = new Date();//使用工具类的公共方法把date进行传参转换格式String JSONDate = JSONDateUtil.JSONFormatDateUtil(date, "yyyy" ); //返回json日期类型return JSONDate; //"2022"}//使用工具类@RequestMapping(value = "/date3" )@ResponseBodypublic String date3()  {//声明DateDate date = new Date();//使用工具类的公共方法把date进行传参转换格式String JSONDate = JSONDateUtil.JSONFormatDateUtil(date, "yyyy-MM-dd" );//返回json日期类型return JSONDate;  //"2022-02-08"}

http://www.ppmy.cn/news/555534.html

相关文章

python:并发编程(二十六)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇八,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…

Qt设置软件启动动画(支持图片和视频俩种方式)

目录 软件启动动画效果静态背景动态背景 程序启动动画QSplashScreen启动时加载静态图片启动时加载视频动画将启动动画置于所有窗口顶层 软件启动动画效果 先来看效果。下面录制了加载图片和gif动图的俩种效果。 静态背景 动态背景 这里我加载了一个gif的动图,你也…

也谈QQ美女找茬外挂的编写

不久前发表在首页的QQ美女找茬(外挂)学习笔记一文让我深受启发,我看了该文章后,也自己动手实现了一个外挂,效果挺不错的。请看截图:从图中可以看出,我没有让结果显示在原游戏窗口中,…

制作联众找茬外挂

制作外挂,首先要做一个鼠标的钩子,这个大家应该都知道.以下简单描述一下 SetWindowsHookEx 装载钩子 UnHookWindowsHookEx 卸载钩子 示例 hHk : SetWindowsHookEx(WH_MOUSE,MouseHookProc,Hinstance,0); 写一个处理函数function MouseHookProc,将需要的鼠标信息通过SendMe…

QQ找茬辅助器

直接正题。 软件需求:给定2张相似图,找出不同处。 A、从游戏窗口获取需要分析的图片 B、对比2图片,辨别出不同处(用红色表示) C、点击不同处,并给游戏窗口发送点击事件 下图是游戏截图。可见效果还是可以…

用Python实现QQ找茬游戏外挂工具

源地址:http://cpiz.net/blog/2012/03/a_qq_zhaocha_assistant_by_python/ (原创作品,转载请注明出处)好久没写技术相关的博文,这次写篇有意思的,关于一个有意思的游戏——QQ找茬,关于一种有意思的语音——Python&…

C#写的QQ找茬外挂

这个暑假转眼就要过完了。本来打算在学校干两件事:学车和竞赛,结果竞赛没能杀进全国总决赛,想想也是意料中的事。学车就更郁闷了,从上学期开学报名到科目一考试,足足等了近五个月。终于摸到真车了,结果每天…

对QQGame-大家来找茬的辅助工具的改进

【前言】最近在博客园首页上看到有“大家来找茬”这个游戏(此游戏为找出两个相近图片的不同点)外挂的相关帖子,所以这里我也翻看了我之前(2009年5月)的写的一个简单的辅助程序(采用 VC6 开发的)…