文档章节

FastJson 测试用例

githob
 githob
发布于 2016/05/09 14:38
字数 654
阅读 75
收藏 0

package jms.test; 


import java.util.ArrayList; 

import java.util.Date; 

import java.util.List; 

import java.util.Map; 

import jms.model.Dept; 

import jms.model.Employee; 

import jms.model.Student; 

import org.junit.Test; 

import com.alibaba.fastjson.JSON; 

import com.alibaba.fastjson.JSONObject; 

import com.alibaba.fastjson.TypeReference; 

import com.alibaba.fastjson.serializer.SerializeConfig; 

import com.alibaba.fastjson.serializer.SerializerFeature; 

import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 

import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; 


public class TestFastjson { 


//fastjson序列化单个对象 与反序列化 

@Test 

public void test1() { 

Employee e = new Employee("001", "张三", 23, new Date()); 


//序列化 

String jsonStr = JSON.toJSONString(e); 

System.out.println(jsonStr); 


//反序列化 

Employee emp = JSON.parseObject(jsonStr, Employee.class); 

System.out.println(emp.getName()); 


//fastjson序列化list集合 与反序列化 

@Test 

public void test2() { 

Employee e = new Employee("001", "张三", 23, new Date()); 

Employee e2 = new Employee("002", "李四", 29, new Date()); 


List<Employee> emps = new ArrayList<Employee>(); 

emps.add(e); 

emps.add(e2); 


//fastjson序列化list, 返回来的是一个json数组,由[]包含两个json 

String jsonArryStr = JSON.toJSONString(emps); 

System.out.println(jsonArryStr); 


// //反序列化 

//法一 

// List<Employee> empList = JSON.parseObject(jsonArryStr, new TypeReference<List<Employee>>(){} ); 

//法二 

List<Employee> empList = JSON.parseArray(jsonArryStr,Employee.class); 

for (Employee employee : empList) { 

System.out.println(employee.getName()); 

System.out.println(employee.getBirthDay()); 




//fastjson序列化复杂对象 与反序列化 

@Test 

public void test3() { 

Employee e = new Employee("001", "张三", 23, new Date()); 

Employee e2 = new Employee("002", "李四", 29, new Date()); 


List<Employee> emps = new ArrayList<Employee>(); 

emps.add(e); 

emps.add(e2); 


Dept dept = new Dept("d001", "研发部", emps); 


//序列化 

String jsonStr = JSON.toJSONString(dept); 

System.out.println(jsonStr); 


//反序列化 

Dept d = JSON.parseObject(jsonStr, Dept.class); 

System.out.println(d.getName()); 


//json转map 

//法一 

Map<String, Object> map1 = JSON.parseObject(jsonStr);//返回JSONObject,JSONObject实现Map<String, Object>接口 

//法二 

// Map<String, Object> map1 = (Map<String, Object>)JSON.parse(jsonStr); 

for (String key : map1.keySet()) { 

System.out.println(key + ":" + map1.get(key)); 


//fastjson 的 JSONObject的使用 

@Test 

public void test4() { 

Employee e = new Employee("001", "张三", 23, new Date()); 


//序列化 

String jsonStr = JSON.toJSONString(e); 

System.out.println(jsonStr); 


//反序列化 (可以和test1比较)  

JSONObject emp = JSON.parseObject(jsonStr, JSONObject.class); 

System.out.println(emp); 

System.out.println(emp.getString("name")); 


//再放一个Employee不存在的字段 

emp.put("salary", "8000"); 

System.out.println(emp.toJSONString()); 

System.out.println(emp.get("salary")); 



//fastjson序列化字符串 

@Test 

public void test5(){ 


List<String> strs = new ArrayList<String>(); 

strs.add("hello"); 

strs.add("world"); 

strs.add("banana"); 


//序列化 

String jsonStr = JSON.toJSONString(strs); 

System.out.println(jsonStr); 


//反序列化 

List<String> strList = JSON.parseObject(jsonStr, new TypeReference<List<String>>(){} ); 

// List<String> strList = JSON.parseArray(jsonStr, String.class);//等同于上一句 

for (String str : strList) { 

System.out.println(str); 


//fastjson过滤字段 

@Test 

public void test6() { 


Employee e = new Employee("001", "张三", 23, new Date()); 

Employee e2 = new Employee("002", "李四", 29, new Date()); 


List<Employee> emps = new ArrayList<Employee>(); 

emps.add(e); 

emps.add(e2); 


//构造过滤器 

SimplePropertyPreFilter filter = new SimplePropertyPreFilter(Employee.class, "id", "age"); 

String jsonStr =JSON.toJSONString(emps, filter); 


System.out.println(jsonStr); 



//fastjson 日期处理 

@Test 

public void test7(){ 


Date date = new Date(); 


String dateStr = JSON.toJSONString(date); 

System.out.println(dateStr); 


String dateStr2 = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss"); 

System.out.println(dateStr2); 


//序列化实体 

Employee emp = new Employee("001", "张三", 23, new Date()); 


//法一 

String empStr = JSON.toJSONStringWithDateFormat(emp, "yyyy-MM-dd HH:mm:ss"); 

System.out.println(empStr); 


//法二 

String empStr2 = JSON.toJSONString(emp, SerializerFeature.WriteDateUseDateFormat); 

System.out.println(empStr2); 


//法三 

SerializeConfig config = new SerializeConfig(); 

config.put(Date.class, new SimpleDateFormatSerializer("yyyy年MM月dd日 HH时mm分ss秒")); 

String empStr3 = JSON.toJSONString(emp, config); 

System.out.println(empStr3); 


//fastjson 去掉值的双引号 实现JSONAware接口 

@Test 

public void test8(){ 

//见同级目录的Function.java 



//fastjson 注解形式  (别名命名, 过滤字段, 日期格式) 

@Test 

public void test9(){ 

Student stu = new Student("001", "张三", 23, new Date()); 

String jsonStr = JSON.toJSONString(stu); 

System.out.println(jsonStr); 



}


本文转载自:http://changxianbest.iteye.com/blog/2181891

githob
粉丝 0
博文 18
码字总数 362
作品 0
浦东
私信 提问
Fastjson和Jackson序列化和读取json的性能实测

偶然间看到的阿里出品的Fastjson,网上对这个json包好评如潮,性能胜Jackson10倍。 本人本着眼见为实的想法,自己测试一下两者的性能比较。 POJO对象名字为User,具体代码就不贴了,里面有两...

derekxyz
2014/04/24
5.8K
0
fastjson 1.1.32 发布,Java 的 JSON 库

java语言最快的json库fastjson发布1.1.32版本,这个版本增加了stream api,支持处理超大json文本 Bug [FASTJSON-208] - 反序列化无setter集合属性返回为null时空指针异常 [FASTJSON-209] - J...

Google
2013/06/24
4.2K
11
fastjson-1.1.48.android发布,进一步提升在android环境下的性能

进一步提升在android环境下的性能,同时减少内存占用,恢复Stream API,更好兼容之前的版本,jar大小196k,比上一个版本fastjson-1.1.47.android小1k。 Bug Fixed 修复引起的字段类型为java....

wenshao
2016/04/11
0
0
使用Fastjson生成Json字符串少字段属性

@wenshao 你好,想跟你请教个问题: 我使用Fastjson将节点对象Node生成JSON字符串时少个对象属性,麻烦你看一下是怎么回事,是bug吗?我用Gson就没出现问题! 这是节点对象文件Node.java 接下...

blinkfox
2013/11/03
7K
5
LuckyFrame V2.6 Beta 版本发布,一站式自动化测试平台

LuckyFrame V2.6 Beta 版本发布,这是集自动化测试以及质量管理的统一平台,自动化测试平台支持接口自动化&UI自动化&移动端自动化,提供多个报表统计数据入口,并有图形化展示,并提供几个质...

海鸥seagull
2018/06/20
705
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.2K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部