zoukankan      html  css  js  c++  java
  • FastJson 数组、List、Set、Map基本序列化与日期格式化

    摘要:

    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":"李四"}}
  • 相关阅读:
    游戏中战斗伤害范围-弹道飞行
    游戏中战斗伤害范围攻击计算完整全版
    更加强健的线程模型,解决线程卡死,退出异常情况
    存在即合理,重复轮子orm java版本
    游戏里12方向,任意方向计算正前方矩形规则
    我是如何设计游戏服务器架构的
    游戏中精灵对象的属性功能设计
    看我是如何处理自定义线程模型---java
    面试和面试者如何保持心态
    谈谈枚举的新用法——java
  • 原文地址:https://www.cnblogs.com/dand/p/10031766.html
Copyright © 2011-2022 走看看