zoukankan      html  css  js  c++  java
  • JSONObject转换JSON之将Date转换为指定格式(转)

    项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的时间对象,这时JSONObject默认会将Date属性转换成这样的格式:

    Html代码  收藏代码
     
    {"nanos":0,"time":-27076233600000,"minutes":0,"seconds":0,"hours":0,"month":11,"timezoneOffset":-480,"year":-789,"day":5,"date":22}  

     而这种格式肯定是非常难以理解的,为了将Date转换为我们认识的“yyyy-MM-dd”格式,需要做以下操作。

     首先创建一个时间转换器

    public class JsonDateValueProcessor implements JsonValueProcessor {
        private String format ="yyyy-MM-dd";
        
        public JsonDateValueProcessor() {
            super();
        }
        
        public JsonDateValueProcessor(String format) {
            super();
            this.format = format;
        }
    
        @Override
        public Object processArrayValue(Object paramObject,
                JsonConfig paramJsonConfig) {
            return process(paramObject);
        }
    
        @Override
        public Object processObjectValue(String paramString, Object paramObject,
                JsonConfig paramJsonConfig) {
            return process(paramObject);
        }
        
        
        private Object process(Object value){
            if(value instanceof Date){  
                SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);  
                return sdf.format(value);
            }  
            return value == null ? "" : value.toString();  
        }
    
    }

    然后在调用JSONObject之前创建一个JsonConfig,并且将上一步定义的date转换器注册进去:

    Java代码  收藏代码
    JsonConfig jsonConfig = new JsonConfig();
    jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());

    最后将JsonConfig放入JSONObject对象中,这里针对不同的数据类型有多种方式放入JsonConfig:

    Java代码  收藏代码
    JSONObject json = new JSONObject();
    //Map转JSON
    json.putAll(Map, jsonConfig);

     或者

    Java代码  收藏代码
    JSONObject json = new JSONObject();
    //JavaBean转JSON
    json.fromObject(object, jsonConfig)

    最后我们看到的结果就是只要JavaBean中有Date对象,转换成JSON字符串时就会变成“yyyy-MM-dd”格式。

  • 相关阅读:
    时间复杂度 空间复杂度
    qt 打开串口 UI卡死
    python 网络编程
    Java 理解泛型的基本含义
    Java LinkedList 和 ArrayList
    Java renameTo()重新命名此抽象路径名表示的文件
    Java separatorChar 如何在Java里面添加
    Java 遍历文件夹里面的全部文件、指定文件
    Java File文件操作 创建文件目录,删除文件目录
    Java toString()方法的神奇之处
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/4917934.html
Copyright © 2011-2022 走看看