zoukankan      html  css  js  c++  java
  • fastjson对Date的处理

    本文转载自:http://blog.csdn.net/llwan/article/details/50779281

    对日期的序列化:

    一种方法是通过注解

    Java代码

    @JSONField (format="yyyy-MM-dd HH:mm:ss")    
    public Date birthday;

    另一种是通过SerializeConfig:

    Java代码  

    private static SerializeConfig mapping = new SerializeConfig();    
    private static String dateFormat;    
    static {    
        dateFormat = "yyyy-MM-dd HH:mm:ss";    
        mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));    
    }  

    json字符串中使用单引号:

    String text = JSON.toJSONString(object, SerializerFeature.UseSingleQuotes);

    字段显示不同的key:

    public class User {    
        @JSONField(name="ID")    
        public int getId() { ... }    
    }    
          
    User user = ...;    
    JSON.toJSONString(user); // {"ID":001}

    自定义序列化代码示例:

    public class JsonUtil {    
        private static SerializeConfig mapping = new SerializeConfig();    
        private static String dateFormat;    
        static {    
            dateFormat = "yyyy-MM-dd HH:mm:ss";    
        }    
         
        /**  
         * 默认的处理时间  
         *   
         * @param jsonText  
         * @return  
         */    
        public static String toJSON(Object jsonText) {    
            return JSON.toJSONString(jsonText,    
                    SerializerFeature.WriteDateUseDateFormat);    
        }    
         
        /**  
         * 自定义时间格式  
         *   
         * @param jsonText  
         * @return  
         */    
        public static String toJSON(String dateFormat, String jsonText) {    
            mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));    
            return JSON.toJSONString(jsonText, mapping);    
        }    
    }  

    自定义反序列化示例:

    先自定义一个日期解析类:

    Java代码  

    public class MyDateFormatDeserializer extends DateFormatDeserializer {    
         
            private String myFormat;    
         
            public MyDateFormatDeserializer(String myFormat) {    
                super();    
                this.myFormat = myFormat;    
            }    
         
            @Override    
            protected <Date> Date cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) {    
                if (myFormat == null) {    
                    return null;    
                }    
                if (val instanceof String) {    
                    String strVal = (String) val;    
                    if (strVal.length() == 0) {    
                        return null;    
                    }    
         
                    try {    
                        return (Date) new SimpleDateFormat(myFormat).parse((String)val);    
                    } catch (ParseException e) {    
                        throw new JSONException("parse error");    
                    }    
                }    
                throw new JSONException("parse error");    
            }    
        }  
  • 相关阅读:
    Django-ORM
    Django-路由系统
    Django-(Request对象和Response对象)
    Django-(CBV和FBV)
    批量设置模板中的时间格式
    Django模板语言-(母板、组件、静态文件相关、simple_tag、inclusion_tag)
    yii2csrf攻击
    centos6更改密码
    ide vscode安装
    xshell配色方案
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/8184759.html
Copyright © 2011-2022 走看看