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格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈maven的jar包和war包区别 以及打包方法

    浅谈maven的jar包和war包区别 以及打包方法

    下面小编就为大家分享一篇浅谈maven的jar包和war包区别 以及打包方法,具有很好的参考价值,希望对大家有所帮助
    2017-11-11
  • Spring Boot Admin 环境搭建与基本使用详解

    Spring Boot Admin 环境搭建与基本使用详解

    这篇文章主要介绍了Spring Boot Admin 环境搭建与基本使用,本文主要是对于Spring Boot Admin的基本认识和基本运用,通过本篇博客能够对Spring Boot Admin有一个宏观认知和能够快速上手,需要的朋友可以参考下
    2023-08-08
  • springboot 项目容器启动后如何自动执行指定方法

    springboot 项目容器启动后如何自动执行指定方法

    这篇文章主要介绍了springboot 项目容器启动后如何自动执行指定方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 玩转SpringBoot中的那些连接池(小结)

    玩转SpringBoot中的那些连接池(小结)

    这篇文章主要介绍了玩转SpringBoot中的那些连接池(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详解Java设计模式——迭代器模式

    详解Java设计模式——迭代器模式

    这篇文章主要介绍了Java设计模式——迭代器模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • spring boot simple类型cache使用详解

    spring boot simple类型cache使用详解

    这篇文章主要介绍了spring boot simple类型cache使用,这里用的不是 redis 的缓存,simple 的缓存默认用的是java的ConcurrentHashMap, 单纯的simple缓存,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • logback打印多次mybatis的sql日志问题

    logback打印多次mybatis的sql日志问题

    这篇文章主要介绍了logback打印多次mybatis的sql日志问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 详解Java编程中if...else语句的嵌套写法

    详解Java编程中if...else语句的嵌套写法

    这篇文章主要介绍了Java编程中if...else语句的嵌套写法,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • Spring Boot应用配置常用相关视图解析器详解

    Spring Boot应用配置常用相关视图解析器详解

    这篇文章主要给大家介绍了关于Spring Boot应用配置常用相关视图解析器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • MyBatis常用标签大全

    MyBatis常用标签大全

    这篇文章主要介绍了MyBatis常用标签大全的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12

最新评论