Java使用JSON实现处理中文乱码和Date格式

 更新时间:2023年06月25日 09:18:01   作者:小花皮猪  
这篇文章主要为大家详细介绍了Java如何在项目中使用JSON实现处理中文乱码和Date格式的功能,文中的示例代码讲解详细,需要的小伙伴可以参考一下

JSON中文乱码

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

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

JSON处理Date格式

@RequestMapping(value = "/date1" )
@ResponseBody
public String date1() throws JsonProcessingException {
    //声明时间日期 注意是util下的
 Date date = new Date();
    //打印默认时间日期格式  Tue Feb 08 21:36:27 CST 2022
 System.out.println(date);
    //发现问题  时间默认返回的json字符串变成了时间戳类型的格式 Timestamp 1644327387386
  return   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" )
@ResponseBody
public 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指定日期格式为simpleDateFormat
 objectMapper.setDateFormat(simpleDateFormat);
    //声明Date
 Date date = new Date();
    //格式化日期并输出
    System.out.println(simpleDateFormat.format(date));//2022-02-08 22:01:12
    return 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;
    }
}

使用工具类和公共方法

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

到此这篇关于Java使用JSON实现处理中文乱码和Date格式的文章就介绍到这了,更多相关JSON处理中文乱码和Date格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA的Swing可视化插件JFormDesigner详解

    IDEA的Swing可视化插件JFormDesigner详解

    JFormDesigner是一个专业的软件应用程序,专门用于帮助您开发Java Swing用户界面,而无需具备编程技能。它可作为独立实用程序使用,也可以将其用作各种IDE的插件,本文给大家介绍idea Swing可视化插件,感兴趣的朋友一起看看吧
    2022-06-06
  • Java应用EasyExcel工具类

    Java应用EasyExcel工具类

    这篇文章主要介绍了Java应用EasyExcel工具类,文中有非常详细的代码示例,对正在学习java的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-05-05
  • SpringBoot解决循环调用问题

    SpringBoot解决循环调用问题

    作者在将SpringBoot从1.5版本升级至2.6版本,并迁移至阿里云上运行后,遇到了循环调用问题,在Jetty容器中运行没问题,但在Tomcat容器中就出现了循环引用问题,原因是SpringBoot 2.6不鼓励循环引用,暴露出该问题,作者提供了两种解决思路
    2024-10-10
  • Java设计模式 模板模式及应用场景解析

    Java设计模式 模板模式及应用场景解析

    这篇文章主要介绍了Java设计模式 模板模式及应用场景解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Springboot使用maven打包指定mainClass问题

    Springboot使用maven打包指定mainClass问题

    这篇文章主要介绍了Springboot使用maven打包指定mainClass问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java设置session超时的几种方式总结

    Java设置session超时的几种方式总结

    这篇文章主要介绍了Java设置session超时的几种方式总结的相关资料,需要的朋友可以参考下
    2017-07-07
  • 基于eclipse-temurin镜像部署spring boot应用的实现示例

    基于eclipse-temurin镜像部署spring boot应用的实现示例

    本文提供了基于eclipse-temurin镜像部署Spring Boot应用的详细实现示例,通过使用Docker镜像,可以轻松地创建和管理Spring Boot应用程序的容器化环境,感兴趣的可以了解一下
    2023-08-08
  • java list,set,map,数组间的相互转换详解

    java list,set,map,数组间的相互转换详解

    这篇文章主要介绍了java list,set,map,数组间的相互转换详解的相关资料,这里附有实例代码,具有参考价值,需要的朋友可以参考下
    2017-01-01
  • idea中的jvm调优方式

    idea中的jvm调优方式

    这篇文章主要介绍了idea中的jvm调优方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java并发编程中构建自定义同步工具

    Java并发编程中构建自定义同步工具

    这篇文章主要介绍了Java并发编程中构建自定义同步工具,本文讲解了可阻塞状态依赖操作的结构、有界缓存实现基类示例、阻塞实现方式一:抛异常给调用者、阻塞实现方式二:通过轮询和休眠、阻塞实现方式三:条件队列等内容,需要的朋友可以参考下
    2015-04-04

最新评论