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":"李四"}}
FastJson 数组、List、Set、Map基本序列化与日期格式化的更多相关文章
- jackson、fastjson、kryo、protostuff等序列化工具性能对比
简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化 ...
- JS数组filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()实例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- JQuery 操作数组 each、map、grep
Jquery中对数组的操作大致有一下几种形式:1.$.each( collection, callback(indexInArray, valueOfElement) )$.each()函数和$(se ...
- json序列化时间日期数据注意
通过json序列化时间日期格式数据的时候需要注意,不能直接序列化,我写了一个类,可以借用 import json from datetime import datetime,date a = {'na ...
- 使用fastjson将list、map转换成json,出现$ref
这是转换时出现的问题情况( map >> json ) 引用是通过"$ref"来表示的 引用 描述 "$ref":".." 上一 ...
- Java中让fastJson识别Colloction和Map中的泛型类
由于fastJson的高效性,最近采用fastJson来做序列化并存储数据,但出现了一个麻烦的问题,如果将Map<K,V>这样的类型序列化,反序列化就会不尽人意,有以下尝试: 使用JSON ...
- 处理数组的forEach map filter的兼容性
处理数组的forEach //forEach处理 if(!Array.prototype.forEach) { Array.prototype.forEach = function (callback ...
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaA ...
- jQuery数组($.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray)处理函数详解
1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍jQuery对象的$().each()方法,此方法可用于例遍任何对象.回调函数拥有两个参数:第一个为对象的成员 ...
随机推荐
- 020_nginx禁止ip默认参数是$remote_addr无法禁止真实ip的问题
由于网站使用了cdn所以$remote_addr获取的ip是cdn的ip,我现在先禁止某些ip访问发现无法禁止cdn传递过来的客户端的ip也就是$http_x_forwarded_for这个参数.比如 ...
- HAProxy从零开始到掌握
转自:https://www.jianshu.com/p/c9f6d55288c0 目录: HAProxy是什么 HAProxy的核心能力和关键特性 HAProxy的安装和运行 使用HAProxy搭建 ...
- Android gradle provided、implementation等指令注意点
其实这类文章博客网上一搜一大堆,但有些地方可能说的不太清楚(都一样的内容,抄袭太严重),这里只是做个精简的总结和一些其他地方没提到的点. 一.Android Studio 3.0开始使用了新的指令,原 ...
- PL\SQL 随学笔记
一.在PL\SQL语句块begin...end;中,不能直接使用select,必须与into结合查询. 例如: declare aa:=22; id2 integer; begin select * ...
- 用echarts写的轨迹图demo
轨迹图预览: [下载地址]:https://github.com/zhangzn3/trail-graph.git
- linux基础实操四
实操一: 1)为新加的硬盘分区,一个主分区大小为10剩余空间给扩展分区,在扩展分区上划分2个逻辑分别为5G 2)式化主分区为ext3系统 #mkfs.ext3 /dev/sdb1 3 将逻辑分区设置为 ...
- cf862d 交互式二分
/* 二分搜索出一个01段或10即可 先用n个0确定1的个数num 然后测试区间[l,mid]是否全是0或全是1 如果是,则l=mid,否则r=mid,直到l+1==r 然后再测试l是1还是r是1 如 ...
- CentOS7+mysql(yum)
1.现在centos上默认是没有yum源的,yum安装的是 MariaDB.所以我们需要自己先配置yum源.配置yum源步骤如下: 下载yum源:wget 'https://dev.mysql.com ...
- C++ Primer 笔记——固有的不可移植的特性
1.为了支持底层编程,C++定义了一些固有的不可移植的特性,所谓不可移植特性是指因机器而异的特性. 2.一个位域中含有一定数量的二进制位,位域在内存中的布局是机器相关的.位域的类型必须是整型或枚举类型 ...
- 饮冰三年-人工智能-Python-14Python基础之变量与函数
1:函数:函数是逻辑结构化和过程化的一种编程方法.函数即变量 #参数组:**字典 *列表 def test(x,*args): print(args); print(args[0]); print(& ...