`

FastJson 测试用例

    博客分类:
  • java
 
阅读更多
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
分享到:
评论

相关推荐

    fastjson使用案例源码

    在Java开发中,Fastjson是阿里巴巴提供的一款性能优秀、功能强大的JSON处理库。它能够方便地将Java对象转换成JSON字符串,同时也支持将JSON内容解析为Java对象,这对于数据交换和序列化非常有用。本资源提供了...

    fastjson定制工程,别名配置化

    在“jxxt-fastjson”这个压缩包中,可能包含了实现这个功能的源代码、配置文件示例、以及相关的测试用例。通过分析这些内容,我们可以深入理解如何在实际项目中实施这个定制的Fastjson别名配置化方案。同时,了解这...

    fastJSON2.0.14源代码

    - **Consoletest** 和 **UnitTests**: 这些是实际的测试项目,包含测试用例,可以帮助我们理解如何使用 FastJSON 的 API 来进行序列化和反序列化操作。 - **fastJSON**: 这是 FastJSON 源代码所在的目录,开发者...

    最新fastJSON C#的JSON开发包 v2.1.18

    - `fastJSON-SL.sln` 和 `consoletest.sln` 是Visual Studio 解决方案文件,它们包含了项目的源代码和测试用例,方便开发者进行代码审查和扩展。 7. **历史记录**: - `history.txt` 文件可能记录了 FastJSON 自...

    fastjson下载包

    - **UnitTests**:这是单元测试的代码目录,通过这些测试用例,我们可以验证FastJson的正确性和性能。 【总结】 FastJson是Android开发中处理JSON数据的重要工具,其高效性能和简洁API使得JSON操作变得简单。通过...

    fastJSON_v2.0.22(最新)

    - `UnitTests` 和 `Consoletest` 目录:包含测试用例和示例应用程序的代码。 **4. 如何使用FastJSON** - **序列化对象**:通过`JSON.ToJSON()`方法,可以将.NET对象转换为JSON字符串。 - **反序列化对象**:使用`...

    fastjson-1.1.36 源码

    在`test`目录下的测试类中,Fastjson的单元测试覆盖了各种场景,包括基本类型、集合、自定义类型、循环引用等,这些测试用例对于理解Fastjson的工作原理和排查潜在问题非常有帮助。 在性能优化方面,Fastjson ...

    最新的fastjson 1.2.58 源代码

    源代码外,还可能包含其他相关模块,如测试用例、示例代码、构建脚本等,这些都是理解和使用Fastjson的宝贵资料。开发者可以通过阅读这些源代码,更好地掌握Fastjson的使用,并且可以根据需要进行二次开发或定制。

    fastJSON.docx

    FastJSON 有超过 1500 个测试用例,每次构建都会跑一遍,丰富的测试场景保证了功能稳定。 FastJSON 序列化和反序列化是 JSON 库涉及的最基本功能。 FastJSON 支持 Java Bean 的直接序列化,可以使用 ...

    FastJson漏扫.zip

    2. 工具读取`fastjson_poc.txt`中的PoC代码,对每个测试用例进行尝试。 3. 对每个PoC,工具会模拟恶意输入,观察系统的响应。 4. 如果发现异常行为,如异常堆栈跟踪或未经授权的代码执行,工具将记录并报告这些漏洞...

    【Spring Boot丨序列化、反序列化】

    Spring boot 替换默认的jackson库为fastjson Spring boot 使用jsontest注解测试序列化反序列化用例 Spring Boot 中使用 Fastjson用例

    Fastjson反序列化漏洞史1

    文章还探讨了一个典型的测试用例,展示了如何针对不同版本的Fastjson进行反序列化漏洞的测试。例如,`User`类中包含了私有和公共属性,以及不同的访问控制方法。这种类型的对象在反序列化过程中,如果Fastjson没有...

    fastjson 总结

    在提供的代码文件中,`TestJson1.java` 和 `TestJson2.java` 很可能是测试用例,用来验证 Fastjson 的各种功能和性能。例如,它们可能包含了对不同数据结构的序列化和反序列化,或者进行了性能基准测试。`User.java`...

    java转json测试项目(附带json jar包)

    4. 测试转换:编写测试用例,比较两者的转换结果是否一致,观察性能差异。 5. JSON操作:尝试对JSON对象进行一些常见操作,如获取键值、遍历、修改、删除等,并验证操作结果。 6. 序列化与反序列化:将JSON字符串...

    基于springboot+druid+fastjson多数据源分布式事务处理源码.zip

    项目中可能包含`pom.xml`文件来管理依赖,`application.properties`或`application.yml`来配置Spring Boot和Druid,以及业务代码和测试用例。 通过分析上述技术点,我们可以了解到该源码项目旨在提供一个完整的、...

    springmvc4+spring4+hibernate5.1.3+二级缓存ehcache+fastjson配置

    压缩包中的"SpringMVC4.3_Spring4_Hibernate5.1.3配置文件"应该包含了所有必要的配置文件,如Spring的bean定义XML文件、Hibernate的配置文件、Web应用的部署描述符(web.xml)等,以及可能的示例代码和测试用例。...

    java JSON解析库Alibaba Fastjson用法详解

    其全面的测试用例确保了代码的健壮性。 总的来说,Fastjson凭借其高速度、易用性和广泛的功能,成为了Java开发中处理JSON数据的首选库。无论是简单的数据转换还是复杂的数据操作,Fastjson都能提供高效且稳定的解决...

    java实现json报文比对(含测试数据,项目可直接下载运行测试)

    6. **测试框架**:为了确保JSON比对功能的正确性,项目中包含了测试数据和测试用例。常见的Java测试框架有JUnit、TestNG等,它们允许编写单元测试以验证代码功能。 7. **代码结构**:良好的代码组织可以提高代码的...

Global site tag (gtag.js) - Google Analytics