FastJson 测试用例

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值