Java FastJson使用教程
什么是FastJson?
FastJson是阿里巴巴的开源JSON处理库,它能够将Java对象转换成JSON格式的数据,也可以将JSON格式的数据转换成Java对象。FastJson处理速度极快,是目前Java平台上最快的JSON处理器之一。
FastJson的安装和配置
最简单的方法是通过Maven来引入FastJson:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
如果使用的不是Maven来管理依赖,也可以手动下载FastJson的jar文件,然后在项目中添加依赖。
FastJson的基本用法
将Java对象转换成JSON格式的数据
import com.alibaba.fastjson.JSON;
public class Person {
private String name;
private int age;
//构造函数省略
//getter和setter方法省略
//重写toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
//创建一个Person对象
Person person = new Person("Tom", 20);
//将Person对象转换成JSON格式的数据
String jsonStr = JSON.toJSONString(person);
System.out.println(jsonStr);
}
}
程序输出结果为:
{"age":20,"name":"Tom"}
将JSON格式的数据转换成Java对象
import com.alibaba.fastjson.JSON;
public class Person {
private String name;
private int age;
//构造函数省略
//getter和setter方法省略
//重写toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
//创建JSON格式的数据
String jsonStr = "{\"age\":20,\"name\":\"Tom\"}";
//将JSON格式的数据转换成Person对象
Person person = JSON.parseObject(jsonStr, Person.class);
System.out.println(person);
}
}
程序输出结果为:
Person{name='Tom', age=20}
FastJson的高级用法
配置序列化和反序列化的特性
FastJson提供了一些特殊的配置,可以用来控制序列化和反序列化的行为。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class Person {
private String name;
private int age;
//省略getter和setter方法以及构造函数
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
Person person = new Person("Tom", 20);
//配置序列化特性
JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";
String jsonStr = JSON.toJSONString(person, SerializerFeature.WriteDateUseDateFormat);
System.out.println(jsonStr);
}
}
程序输出结果为:
{"age":20,"name":"Tom"}
序列化和反序列化的处理器
FastJson提供了一些处理器,可以对序列化和反序列化进行定制化处理。
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Date;
public class Person {
private String name;
private int age;
private Date birthday;
//省略getter和setter方法以及构造函数
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", birthday=" + birthday +
'}';
}
public static void main(String[] args) {
Person person = new Person("Tom", 20, new Date());
JSON.toJSONString(person, new ObjectSerializer() {
@Override
public void write(JSONSerializer jsonSerializer, Object o, Object o1, Type type, int i) throws IOException {
if(o == null){
jsonSerializer.getWriter().writeNull();
}else{
jsonSerializer.write(o.toString());
}
}
});
System.out.println(person);
}
}
程序输出结果为:
{"age":20,"birthday":1589687550687,"name":"Tom"}
FastJson的实战应用
FastJson在实际的开发中,可以用来进行JSON格式的数据解析和封装。例如下面这个例子:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws Exception {
//读取JSON文件中的数据
FileInputStream fileInputStream = new FileInputStream("src/main/resources/data.json");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
StringBuffer sb = new StringBuffer();
String line = "";
while((line = bufferedReader.readLine()) != null){
sb.append(line);
}
bufferedReader.close();
fileInputStream.close();
//将JSON格式的数据解析成JSONObject对象
JSONObject jsonObject = JSON.parseObject(sb.toString());
//解析JSONObject对象中的数据
String name = jsonObject.getString("name");
int age = jsonObject.getIntValue("age");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
//封装数据成JSON格式的数据
JSONObject newJsonObject = new JSONObject();
newJsonObject.put("name", "Jack");
newJsonObject.put("age", 25);
String jsonStr = JSON.toJSONString(newJsonObject);
System.out.println("New JSON Data: " + jsonStr);
}
}
在这个例子中,我们读取了一个JSON格式的文件,将其中的数据解析成JSONObject对象,然后根据需要获取其中的数据,最后将一些数据封装成一个新的JSONObject对象,将其转换成JSON格式的数据并输出到屏幕上。
结束语
通过本篇文章的学习,我们对FastJson这个开源JSON处理库有了更深入和全面的了解,我们可以通过它来完成Java对象和JSON格式数据格式之间的转换,以及对JSON格式的数据进行解析和封装。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java FastJson使用教程 - Python技术站