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

原文地址:https://www.cnblogs.com/dand/p/10031766.html

时间: 2024-10-11 16:38:43

FastJson 数组、List、Set、Map基本序列化与日期格式化的相关文章

数组转化成map和set的简单实现

将数组转化为Set(不使用Set类). 思路:1.将数组排序   2.遍历数组,将临近的元素进行比较,如果不相等就加入容器. (当然这里返回的是一个有序无重的容器没有实现无序) /** * 将数组去重(不使用Set的情况下) * @param array 被操作数组 * @return 目标Set */ public static List<Integer> intToSet(int[] array){ List<Integer> list = new ArrayList<I

easyui datagrid 中序列化后的日期格式化

1.在easyui datagrid 中序列化后的日期显示为:/Date(1433377800000)/ 2.格式化后的显示为: 2015-06-04 08:30:00 3.使用代码如下: 3.1. <script type="text/javascript"> $(function () { $("#tdList").datagrid({ url: "/Admin/Dictionary/Index", title: "数据

使用fastjson将list、map转换成json,出现$ref

这是转换时出现的问题情况( map >> json ) 引用是通过"$ref"来表示的 引用 描述 "$ref":".." 上一级 "$ref":"@" 当前对象,也就是自引用 "$ref":"$" 根对象 "$ref":"$.children.0" 基于路径的引用,相当于 root.getChildren().ge

Java中让fastJson识别Colloction和Map中的泛型类

由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map<K,V>这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON.parseObject(json):得到的结果是无类型Map,其value为JSONObject. 使用JSON.parseObject(json, Map.class):结果同上. 虽然说使用JSONObject.toJavaObject(V.class)也能够完成所求,但是这样的方法还是略麻烦,而且如果

scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例

package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaApp02 { def main(args: Array[String]) { tupleDemo println mapDemo println arrayDemo println fileWriteAndRead println(getUrlContent("http://www.cnblogs.

FastJSON 转换List&lt;T&gt; ,Map&lt;T,T&gt;泛型失败 处理方法

dictDataMap = JSON.parseObject(dictAllCacheResult,new TypeReference<Map<String, DictionaryDataEntity>>(){}); 采用fastJson提供的另一种转换方式即可

利用FastJSON 把list和map转换成Json

JSON 是个好东西,就是第三方的库太多了有木有.今天在把List转化成JSON的时候,在网上找到的方法,就用了各种第三方的库,把自己搞晕了,其实是很简单.所以做事情的时候一定要思路清晰,导入的包也是很重要的,别上来就看代码,把自己整蒙圈了... 之前有用过谷歌的Gson ,这次用的是阿里的FastJSON. 项目用的是servlet //确保JSP和servlet的编码方式一致 resp.setContentType("text/html;charset=GBK"); List<

数组reduce和map方法

1.有一个长度为100的数组,请以优雅的方式求出该数组的前10个元素之和 var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],sum = 0; sum = a.slice(0, 10).reduce(function(pre, current) { return pre + current;}); console.log(sum); //55 2.不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标. v

处理数组的forEach map filter的兼容性

处理数组的forEach 1 //forEach处理 2 if(!Array.prototype.forEach) { 3 Array.prototype.forEach = function (callback) { 4 for(var i=0,len=this.length;i<len;i++) { 5 callback(this[i], i); 6 } 7 } 8 } 处理数组的map 1 //处理map 2 if(!Array.prototype.map) { 3 Array.proto