若是要被序列化的對象含有一個date屬性或者多個date屬性按照相同的格式序列化日期的話,那咱們能夠使用下面的語句實現:html
在應用的的Main方法體裏配置全局參數:json
JSONObject.DEFFAULT_DATE_FORMAT="yyyy-MM-dd";//設置日期格式
或者使用時傳遞配置參數post
JSONObject.toJSONString(resultMap, SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect,SerializerFeature.WriteDateUseDateFormat);
可是上面的解決方案面臨一個問題,若是不知足上面的條件(多個date屬性,並且須要按照不定的格式序列化這些日期屬性),那麼咱們就須要另闢蹊徑,使用fastjson的特性來完成:測試
@JSONField(format="yyyyMMdd")
private Date date;
@JSONField(format="yyyy-MM-dd HH:mm:ss")
private Date date1;
若是但願DTO轉換輸出的是下劃線風格(fastjson默認駝峯風格),請使用:spa
@JSONField(name="service_name")
private String serviceName;
FastJSON全局配置說明.net
- SerializerFeature.PrettyFormat:格式化輸出
- SerializerFeature.WriteMapNullValue:是否輸出值爲null的字段,默認爲false
- SerializerFeature.DisableCircularReferenceDetect:消除循環引用
- SerializerFeature.WriteNullStringAsEmpty:將爲null的字段值顯示爲""
- WriteNullListAsEmpty:List字段若是爲null,輸出爲[],而非null
- WriteNullNumberAsZero:數值字段若是爲null,輸出爲0,而非null
- WriteNullBooleanAsFalse:Boolean字段若是爲null,輸出爲false,而非null
- SkipTransientField:若是是true,類中的Get方法對應的Field是transient,序列化時將會被忽略。默認爲true
- SortField:按字段名稱排序後輸出。默認爲false
- WriteDateUseDateFormat:全局修改日期格式,默認爲false。JSON.DEFFAULT_DATE_FORMAT = 「yyyy-MM-dd」;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
- BeanToArray:將對象轉爲array輸出
- QuoteFieldNames:輸出key時是否使用雙引號,默認爲true
- UseSingleQuotes:輸出key時使用單引號而不是雙引號,默認爲false(經測試,這裏的key是指全部的輸出結果,而非key/value的key,而是key,和value都使用單引號或雙引號輸出)
想要全局配置的話,請在Main方法體中設置:code
//先執行static代碼塊,再執行該方法
//是否輸出值爲null的字段,默認爲false
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.WriteMapNullValue.getMask();
//數值字段若是爲null,輸出爲0,而非null
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.WriteNullNumberAsZero.getMask();
//List字段若是爲null,輸出爲[],而非null
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.WriteNullListAsEmpty.getMask();
//字符類型字段若是爲null,輸出爲 "",而非null
JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.WriteNullStringAsEmpty.getMask()
暫時未找到xml方式的配置方法,/(ㄒoㄒ)/~~orm
同時上面紅色部分在Dubbo環境下,rpc數據序列化使用fastjson會有坑。xml
傳遞給下游的Bean對象裏,若是類屬性是基礎數據包裝對象,好比Byte,fastson反序列化後會給該字段設置默認值0。htm
但你的本意是該屬性應該是null,結果倒是0。
對於程序開發來講0是有意義的數據,最終致使出現BUG、或者數據被0覆蓋更新。
切記切記,全局配置慎用!/(ㄒoㄒ)/~~
PS:
https://blog.csdn.net/qq_34120041/article/details/83114744
https://www.cnblogs.com/xd03122049/p/6079695.html
https://blog.csdn.net/john1337/article/details/76277617
https://blog.csdn.net/zjkyx888/article/details/78673898
https://blog.csdn.net/fly910905/article/details/78474813