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":"李四"}}