FastJson對Date的處理

jopen 9年前發布 | 60K 次閱讀 JSON開發包 fastjson

對日期的序列化:

一種方法是通過注解

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");  
        }  
    }


 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!