FastJson 数组ListSetMap基本序列化与日期格式化
Posted 淡定
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastJson 数组ListSetMap基本序列化与日期格式化相关的知识,希望对你有一定的参考价值。
摘要:
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":"李四"}}
以上是关于FastJson 数组ListSetMap基本序列化与日期格式化的主要内容,如果未能解决你的问题,请参考以下文章