<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version> </dependency>
public class User { private int id; private String name; private String add; private String old; }
public class Word { private String d; private String e; private String f; private String a; private int b; private boolean c; private Date date; private Map<String , Object> map; private List<User> list; }
public class SerializerFeatureTest { private static Word word; private static void init() { word = new Word(); word.setA("a"); word.setB(2); word.setC(true); word.setD("d"); word.setE(""); word.setF(null); word.setDate(new Date()); List<User> list = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setOld("11"); user1.setName("用戶1"); user1.setAdd("北京"); User user2 = new User(); user2.setId(2); user2.setOld("22"); user2.setName("用戶2"); user2.setAdd("上海"); User user3 = new User(); user3.setId(3); user3.setOld("33"); user3.setName("用戶3"); user3.setAdd("廣州"); list.add(user3); list.add(user2); list.add(null); list.add(user1); word.setList(list); Map<String , Object> map = new HashedMap(); map.put("mapa", "mapa"); map.put("mapo", "mapo"); map.put("mapz", "mapz"); map.put("user1", user1); map.put("user3", user3); map.put("user4", null); map.put("list", list); word.setMap(map); } public static void main(String[] args) { init(); // useSingleQuotes(); // writeMapNullValue(); // useISO8601DateFormat(); // writeNullListAsEmpty(); // writeNullStringAsEmpty(); // sortField(); // prettyFormat(); // writeDateUseDateFormat(); // beanToArray(); showJsonBySelf(); } /** * 9:自定義 * 格式化輸出 * 顯示值爲null的字段 * 將爲null的字段值顯示爲"" * DisableCircularReferenceDetect:消除循環引用 */ private static void showJsonBySelf() { System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteNullListAsEmpty)); } /** * 8: * 將對象轉爲array輸出 */ private static void beanToArray() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.BeanToArray)); } /** * 7: * WriteDateUseDateFormat:全局修改日期格式,默認爲false。 */ private static void writeDateUseDateFormat() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd"; System.out.println(JSON.toJSONString(word, SerializerFeature.WriteDateUseDateFormat)); } /** * 6: * PrettyFormat */ private static void prettyFormat() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.PrettyFormat)); } /** * SortField:按字段名稱排序後輸出。默認爲false * 這裏使用的是fastjson:爲了更好使用sort field martch優化算法提高parser的性能,fastjson序列化的時候, * 缺省把SerializerFeature.SortField特性打開了。 * 反序列化的時候也缺省把SortFeidFastMatch的選項打開了。 * 這樣,若是你用fastjson序列化的文本,輸出的結果是按照fieldName排序輸出的,parser時也能利用這個順序進行優化讀取。 * 這種狀況下,parser可以得到很是好的性能。 */ private static void sortField() { System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.SortField)); } /** * 5: * WriteNullStringAsEmpty:字符類型字段若是爲null,輸出爲"",而非null * 須要配合WriteMapNullValue使用,現將null輸出 */ private static void writeNullStringAsEmpty() { word.setE(null); System.out.println(JSONObject.toJSONString(word)); System.out.println("設置WriteMapNullValue後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue)); System.out.println("設置WriteMapNullValue、WriteNullStringAsEmpty後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty)); } /** * 4: * WriteNullListAsEmpty:List字段若是爲null,輸出爲[],而非null * 須要配合WriteMapNullValue使用,現將null輸出 */ private static void writeNullListAsEmpty() { word.setList(null); System.out.println(JSONObject.toJSONString(word)); System.out.println("設置WriteNullListAsEmpty後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty)); } /** * 3: * UseISO8601DateFormat:Date使用ISO8601格式輸出,默認爲false */ private static void useISO8601DateFormat() { System.out.println(JSONObject.toJSONString(word)); System.out.println("設置UseISO8601DateFormat後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.UseISO8601DateFormat)); } /** * 2: * WriteMapNullValue:是否輸出值爲null的字段,默認爲false */ private static void writeMapNullValue() { System.out.println(JSONObject.toJSONString(word)); System.out.println("設置WriteMapNullValue後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue)); } /** * 1: * UseSingleQuotes:使用單引號而不是雙引號,默認爲false */ private static void useSingleQuotes() { System.out.println(JSONObject.toJSONString(word)); System.out.println("設置useSingleQuotes後:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.UseSingleQuotes)); } }
一、useSingleQuotes: java
二、writeMapNullValue:算法
三、useISO8601DateFormat: json
四、writeNullListAsEmpty: 性能
五、writeNullStringAsEmpty: 測試
六、prettyFormat: 優化
七、writeDateUseDateFormat: orm
八、beanToArray: 對象
九、自定義組合:showJsonBySelf:blog