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 是一个快速的 JSON 组件,可以用于 C# 中对 JSON 数据的序列化和反序列化。下面是关于 fastJSON 的知识点: fastJSON 简介 fastJSON 是一个开源的 JSON 序列化组件,可以用于 C# 中对...
FastJSON 使用指南 FastJSON 是一个 Java 语言编写的高性能功能完善的 JSON 库。下面是 FastJSON 的详细介绍和使用指南。 FastJSON 特点 FastJSON 采用独创的算法,将 parse 的速度提升到极致,超过所有 JSON 库...
### Fastjson 使用详解 #### 一、概述 Fastjson 是阿里巴巴开源的一款高性能的 JSON 序列化/反序列化库,旨在提供一个简单且快速的方式来处理 JSON 数据。它支持 Java 泛型、自定义序列化类、任意复杂对象以及预先...
FastJSON 使用指南 FastJSON 是一个 Java 语言编写的高性能功能完善的 JSON 库。它采用独创的算法,将 parse 的速度提升到极致,超过所有 JSON 库,包括曾经号称最快的 Jackson。FastJSON 还超越了 Google 的二进制...
### fastjson 使用详解 #### 一、概述 `fastjson` 是阿里巴巴开发的一款高性能的 JSON 库,主要用于 Java 对象与 JSON 字符串之间的互相转换。它提供了非常快速且轻量级的序列化和反序列化操作,在 Android 开发和...
以下是Fastjson使用的一些关键知识点: 1. **基本使用**:首先需要引入Fastjson的依赖,通常通过Maven或Gradle进行管理。例如,在Maven中添加以下依赖: ```xml <groupId>com.alibaba</groupId> <artifactId>...
json解析:FastJson使用归纳.pdf
本文将深入探讨Gson和Fastjson的使用,以及它们各自的特点。 **Gson** Gson是由Google提供的一个开源库,它能够将Java对象转换为JSON字符串,反之亦然。Gson的优点在于其灵活性和易用性。下面是如何使用Gson的基本...
作为开源项目,Fastjson使用Apache License 2.0协议进行开源。 Fastjson主要特点包括: 1. 高性能:Fastjson在性能测试中表现优异,适合在对性能有较高要求的场合使用。 2. 功能全面:支持丰富的数据类型转换,并...
本资源提供了Fastjson的使用案例源码,虽然作者提到“这个资源并没有什么用处”,但通过学习这些源码,我们可以深入理解Fastjson的用法,并提升在实际项目中的应用能力。 1. **快速入门** - **序列化**:将Java...
本篇文章将深入探讨Fastjson的使用及其优势,帮助开发者更好地理解和应用这个工具。 Fastjson的核心功能主要包括: 1. **Java对象与JSON字符串之间的转换**:Fastjson支持将Java对象直接转换为JSON字符串,同时也...
三、Fastjson使用示例 1. **JSON字符串转Java对象** ```java String jsonString = "{\"name\":\"张三\",\"age\":25}"; Person person = JSON.parseObject(jsonString, Person.class); ``` 2. **Java对象转JSON...
下面是一些关键的Fastjson使用方法: 1. **解析JSON字符串到Java对象** - `JSONObject.parseObject(String jsonString, Class<T> clazz)`:将JSON字符串解析为Java对象,其中`T`是你想要的类类型。 - `JSONArray....
然而,近期阿里云官方发布了一则安全公告,指出 Fastjson 在特定版本中存在严重的远程代码执行(RCE)漏洞,这为攻击者提供了潜在的攻击途径,威胁到了使用这些版本的应用系统安全。 **漏洞详情** 该漏洞主要存在...
在标题提到的"fastjson所用jar包"中,我们讨论的是Fastjson的两个核心jar文件,这些文件通常包含了Fastjson的所有功能,使得开发者能够在自己的项目中便捷地引入和使用Fastjson。 **Fastjson的功能** 1. **解析...
下面是一个简单的FastJSON使用示例: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class FastJSONExample { public static void main(String[] args) { // 创建...