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");    
        }    
    }  
原文地址:https://www.cnblogs.com/wpcnblog/p/8184759.html