packagejms.test; importjava.util.ArrayList; importjava.util.Date; importjava.util.List; importjava.util.Map; importjms.model.Dept; importjms.model.Employee; importorg.junit.Test; importcom.alibaba.fastjson.JSON; importcom.alibaba.fastjson.JSONObject; importcom.alibaba.fastjson.TypeReference; importcom.alibaba.fastjson.serializer.SerializeConfig; importcom.alibaba.fastjson.serializer.SerializerFeature; importcom.alibaba.fastjson.serializer.SimpleDateFormatSerializer; importcom.alibaba.fastjson.serializer.SimplePropertyPreFilter; publicclasstestFastjson{ //fastjson序列化单个对象与反序列化 @Test publicvoidtest1(){ Employeee=newEmployee("001","张三",23,newDate()); //序列化 StringjsonStr=JSON.toJSONString(e); System.out.println(jsonStr); //反序列化 Employeeemp=JSON.parSEObject(jsonStr,Employee.class); System.out.println(emp.getName()); } //fastjson序列化list集合与反序列化 @Test publicvoidtest2(){ Employeee=newEmployee("001",newDate()); Employeee2=newEmployee("002","李四",29,newDate()); List<Employee>emps=newArrayList<Employee>(); emps.add(e); emps.add(e2); //fastjson序列化list,返回来的是一个json数组,由[]包含两个json StringjsonArryStr=JSON.toJSONString(emps); System.out.println(jsonArryStr); ////反序列化 //法一 //List<Employee>empList=JSON.parSEObject(jsonArryStr,newTypeReference<List<Employee>>(){}); //法二 List<Employee>empList=JSON.parseArray(jsonArryStr,Employee.class); for(Employeeemployee:empList){ System.out.println(employee.getName()); System.out.println(employee.getBirthDay()); } } //fastjson序列化复杂对象与反序列化 @Test publicvoidtest3(){ Employeee=newEmployee("001",newDate()); List<Employee>emps=newArrayList<Employee>(); emps.add(e); emps.add(e2); Deptdept=newDept("d001","研发部",emps); //序列化 StringjsonStr=JSON.toJSONString(dept); System.out.println(jsonStr); //反序列化 Deptd=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(Stringkey:map1.keySet()){ System.out.println(key+":"+map1.get(key)); } } //fastjson的JSONObject的使用 @Test publicvoidtest4(){ Employeee=newEmployee("001",newDate()); //序列化 StringjsonStr=JSON.toJSONString(e); System.out.println(jsonStr); //反序列化(可以和test1比较) JSONObjectemp=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 publicvoidtest5(){ List<String>strs=newArrayList<String>(); strs.add("hello"); strs.add("world"); strs.add("banana"); //序列化 StringjsonStr=JSON.toJSONString(strs); System.out.println(jsonStr); //反序列化 List<String>strList=JSON.parSEObject(jsonStr,newTypeReference<List<String>>(){}); //List<String>strList=JSON.parseArray(jsonStr,String.class);//等同于上一句 for(Stringstr:strList){ System.out.println(str); } } //fastjson过滤字段 @Test publicvoidtest6(){ Employeee=newEmployee("001",newDate()); List<Employee>emps=newArrayList<Employee>(); emps.add(e); emps.add(e2); //构造过滤器 SimplePropertyPreFilterfilter=newSimplePropertyPreFilter(Employee.class,"id","age"); StringjsonStr=JSON.toJSONString(emps,filter); System.out.println(jsonStr); } //fastjson日期处理 @Test publicvoidtest7(){ Datedate=newDate(); StringdateStr=JSON.toJSONString(date); System.out.println(dateStr); StringdateStr2=JSON.toJSONStringWithDateFormat(date,"yyyy-MM-ddHH:mm:ss"); System.out.println(dateStr2); //序列化实体 Employeeemp=newEmployee("001",newDate()); //法一 StringempStr=JSON.toJSONStringWithDateFormat(emp,"yyyy-MM-ddHH:mm:ss"); System.out.println(empStr); //法二 StringempStr2=JSON.toJSONString(emp,SerializerFeature.WriteDateUseDateFormat); System.out.println(empStr2); //法三 SerializeConfigconfig=newSerializeConfig(); config.put(Date.class,newSimpleDateFormatSerializer("yyyy年MM月dd日HH时mm分ss秒")); StringempStr3=JSON.toJSONString(emp,config); System.out.println(empStr3); } //fastjson去掉值的双引号实现JSONAware接口 @Test publicvoidtest8(){ //见同级目录的Function.java } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。