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

相关文章

  • Scala中Array和List的区别说明

    Scala中Array和List的区别说明

    这篇文章主要介绍了Scala中Array和List的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 深入解析Java编程中的boolean对象的运用

    深入解析Java编程中的boolean对象的运用

    这篇文章主要介绍了Java编程中的boolean对象的运用,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • 浅谈Spring6中的反射机制

    浅谈Spring6中的反射机制

    Java反射机制是Java语言中一种动态(运行时)访问、检测、修改它本身的能力,主要作用是动态(运行时)获取类的完整结构信息、调用对象的方法,需要的朋友可以参考下
    2023-05-05
  • 详解JVM基础之字节码的增强技术

    详解JVM基础之字节码的增强技术

    字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。接下来,我们将从最直接操纵字节码的实现方式开始深入进行剖析,感兴趣的可以了解一下
    2022-10-10
  • Java中ByteArrayOutputStream乱码问题解决

    Java中ByteArrayOutputStream乱码问题解决

    本文主要介绍了Java中ByteArrayOutputStream乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 关于SpringBoot整合RabbitMQ实现死信队列

    关于SpringBoot整合RabbitMQ实现死信队列

    这篇文章主要介绍了关于SpringBoot整合RabbitMQ实现死信队列,死信队列实际上就是一个普通的队列,只是这个队列跟死信交换机进行了绑定,用来存放死信而已,需要的朋友可以参考下
    2023-05-05
  • Java Hutool(糊涂)工具类索引详解

    Java Hutool(糊涂)工具类索引详解

    这篇文章主要介绍了Java Hutool(糊涂)工具类索引,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Java 导出 CSV 文件操作详情

    Java 导出 CSV 文件操作详情

    这篇文章主要介绍了Java导出CSV文件操作详情,文章通过导入坐标展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 解决idea check out 切换分支时找不到需要的分支问题

    解决idea check out 切换分支时找不到需要的分支问题

    这篇文章主要介绍了解决idea check out 切换分支时找不到需要的分支问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java中Console对象实例代码

    Java中Console对象实例代码

    这篇文章主要介绍了Java中Console对象实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02

最新评论