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":"李四"}}
  • 相关阅读:
    UVA 1386 Cellular Automaton
    ZOJ 3331 Process the Tasks
    CodeForces 650B Image Preview
    CodeForces 650A Watchmen
    CodeForces 651B Beautiful Paintings
    CodeForces 651A Joysticks
    HUST 1601 Shepherd
    HUST 1602 Substring
    HUST 1600 Lucky Numbers
    POJ 3991 Seinfeld
  • 原文地址:https://www.cnblogs.com/dand/p/10031766.html
Copyright © 2011-2022 走看看