fastjson使用
发布时间:2020-12-16 19:35:00 所属栏目:百科 来源:网络整理
导读: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.fastjso
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",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",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",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",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",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",new Date()); String jsonStr = JSON.toJSONString(stu); System.out.println(jsonStr); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |