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”格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM