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);
}
}
相关推荐
fastjson使用详解
fastjson使用详解.txt
C#简单快速的json组件fastJSON使用介绍.docx
json解析:FastJson使用归纳.pdf
Gson和Fastjson 的简单使用
Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。接下来通过本文给大家分享fastjson 使用方法详细介绍,感兴趣的朋友一起看看吧
关于fastjson的完整使用案例,完整代码和注释,jar包,让你快速掌握fastjson的妙处,从此摆脱解析数据的烦恼。
这是本人写方便复习,该资源并没有什么用处
Java编程中有时候会遇到JavaBean对象、json字符串、json对象之间互相转换的问题,个人感觉使用fastjson很方便,把jsonfast包和使用方法分享给大家.
。。。
。。。
fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
下面小编就为大家带来一篇Java的JSON处理器fastjson使用方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot ...
fastjson的两个jar包,需要的可以下载。故意将资源分设置为最低,方便大家。
fastjson jar 使用详解 实例 fastjson jar 使用详解 实例