FastJson 陣列、List、Set、Map基本序列化與日期格式化
阿新 • • 發佈:2018-11-28
摘要:
FastJson可以直接序列化陣列、List、Set、Map等,也可以直接支援日期型別資料的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。
FastJson不僅可以支援普通陣列、List、Set、Map序列化,也可以支援轉載對應的陣列、List、Set、Map序列化。
預設情況下,FastJson將Date型別序列化為long,序列化和反序列化的過程不會導致時區問題。
FastJson還提供了基於格式化輸出的SerializerFeature。
陣列、List、Set、Map基本序列化和反序列化,程式碼案例:
package com.what21.fastjson.fj02; public class User { // ID private String id; // 名稱 private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.what21.fastjson.fj02; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import com.alibaba.fastjson.JSON; /** * 測試Main方法 */ public class FastJsonMain { /** * Array to JSON */ public static void array2Json(){ // 陣列序列化 String[] array = new String[4]; array[0]="北京"; array[1]="上海"; array[2]="廣州"; array[3]="深圳"; String json = JSON.toJSONString(array); System.out.println("序列化 Array to JSON -> "); System.out.println(json); // 陣列反序列化 array = (String[])JSON.parseObject(json,String[].class); System.out.println("反序列化 陣列內容 -> "); System.out.print(array[0] + " "); System.out.print(array[1] + " "); System.out.print(array[2] + " "); System.out.println(array[3]); } /** * List to JSON */ public static void list2Json(){ // List序列化 List<String> list = new ArrayList<String>(); list.add("北京"); list.add("上海"); list.add("廣州"); list.add("深圳"); String json = JSON.toJSONString(list); System.out.println("序列化 List to JSON -> "); System.out.println(json); // List反序列化 list = (List)JSON.parseObject(json,List.class); System.out.println("反序列化 List內容 -> "); System.out.println(list); } /** * Set to JSON */ public static void set2Json(){ // List序列化 Set<String> set = new HashSet<String>(); set.add("北京"); set.add("上海"); set.add("廣州"); set.add("深圳"); String json = JSON.toJSONString(set); System.out.println("序列化 Set to JSON -> "); System.out.println(json); // Set反序列化 set = (Set)JSON.parseObject(json,Set.class); System.out.println("反序列化 Set內容 -> "); System.out.println(set); } /** * Map to JSON */ public static void map2Json(){ Map<String,String> map = new HashMap<String,String>(); map.put("1","北京"); map.put("2","上海"); map.put("3","廣州"); map.put("4","深圳"); String json = JSON.toJSONString(map); System.out.println("序列化 Map to JSON -> "); System.out.println(json); // Map反序列化 map = (Map)JSON.parseObject(json,Map.class); System.out.println("反序列化 Map內容 -> "); System.out.println(map); } /** * Container to JSON */ public static void container2Json(){ List<String> list = new ArrayList<String>(); list.add("北京"); list.add("上海"); list.add("廣州"); list.add("深圳"); Set<String> set = new HashSet<String>(); set.add("天津"); set.add("杭州"); set.add("青島"); set.add("蘇州"); Map<String,Object> map = new HashMap<String,Object>(); map.put("one", list); map.put("two", set); String jsonString = JSON.toJSONString(map); System.out.println("Container to JSON -> "); System.out.println(jsonString); } /** * @param args */ public static void main(String[] args) { // 陣列格式化輸出 array2Json(); // List格式化輸出 list2Json(); // Set格式化輸出 set2Json(); // MAP格式化輸出 map2Json(); // 混合容器格式化輸出 container2Json(); } }
輸出內容:
序列化 Array to JSON -> ["北京","上海","廣州","深圳"] 反序列化 陣列內容 -> 北京 上海 廣州 深圳 序列化 List to JSON -> ["北京","上海","廣州","深圳"] 反序列化 List內容 -> [北京, 上海, 廣州, 深圳] 序列化 Set to JSON -> ["北京","深圳","廣州","上海"] 反序列化 Set內容 -> [北京, 深圳, 廣州, 上海] 序列化 Map to JSON -> {"3":"廣州","2":"上海","4":"深圳","1":"北京"} 反序列化 Map內容 -> {3=廣州, 2=上海, 4=深圳, 1=北京} Container to JSON -> {"one":["北京","上海","廣州","深圳"],"two":["蘇州","青島","天津","杭州"]}
Java Date序列化和反序列化,程式碼案例:
package com.what21.fastjson.fj02; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; /** * 測試Main方法 */ public class FastJsonDateMain { /** * @param args */ public static void main(String[] args) { // 時間 Date date = new Date(); String json = JSON.toJSONString(date); System.out.println(json); // 格式化輸出時間 String jsonStr = JSON.toJSONString(date,SerializerFeature.WriteDateUseDateFormat); System.out.println(jsonStr); // 自定義格式輸出 String dataFormat = "yyyy-MM-dd"; String timeFormat = "yyyy-MM-dd HH:mm:ss SSS"; String dateJson = JSON.toJSONStringWithDateFormat(date, dataFormat, SerializerFeature.WriteDateUseDateFormat); System.out.println(dateJson); String jsonString = JSON.toJSONStringWithDateFormat(date, timeFormat); System.out.println(jsonString); // 從容器中輸出 Map<String,Date> map = new HashMap<String,Date>(); map.put("1", new Date()); map.put("2", new Date()); map.put("3", new Date()); String mapJson = JSON.toJSONStringWithDateFormat(map, dataFormat); System.out.println(mapJson); String mapJson2 = JSON.toJSONStringWithDateFormat(map, timeFormat); System.out.println(mapJson2); } }
輸出內容:
1470841566893 "2016-08-10 23:06:06" "2016-08-10" "2016-08-10 23:06:06 893" {"3":"2016-08-10","2":"2016-08-10","1":"2016-08-10"} {"3":"2016-08-10 23:06:07 314","2":"2016-08-10 23:06:07 314","1":"2016-08-10 23:06:07 314"}
Java物件Map序列化和反序列化,程式碼案例:
package com.what21.fastjson.fj02; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSON; /** * 測試Main方法 */ public class FastJsonObjMain { /** * @param args */ public static void main(String[] args) { Map<String,User> userMap = new HashMap<String,User>(); User zsUser = new User(); zsUser.setId("zhangsan"); zsUser.setName("張三"); userMap.put("one", zsUser); // 使用者二 User lsUser = new User(); lsUser.setId("lisi"); lsUser.setName("李四"); userMap.put("two", lsUser); String jsonString = JSON.toJSONString(userMap); System.out.println("Map to JSON -> "); System.out.println(jsonString); } }
輸出內容:
Map to JSON -> {"one":{"id":"zhangsan","name":"張三"},"two":{"id":"lisi","name":"李四"}}