FastJson 数组、List、Set、Map基本序列化与日期格式化

时间:2023-03-09 04:29:26
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":"李四"}}