深入浅析Java常用的格式化Json工具类
什么是Json
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。JSON是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。
Java中常用的Json工具类
Java中有多种Json工具类可供选择,常用的包括:
- jackson
- Gson
- Fastjson
这些工具类都可以方便地将Java对象转换为Json格式,也可以将Json格式转换为Java对象。
接下来,我们将深入浅析这三个Json工具类的基本用法。
jackson
Jackson是由FasterXML开发的一个解析和序列化Json数据的Java库,常用于Web应用程序开发。Jackson提供了两种方法,用于将Java对象序列化为Json格式:data binding和tree model。
data binding
Data binding是将Java对象序列化为Json格式的一种简单方法。要使用data binding,只需创建一个ObjectMapper对象,调用其writeValue()方法,将Java对象序列化为Json格式:
//User 类
public class User {
private String name;
private int age;
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// getter, setter ...
}
// 将对象序列化为 Json
ObjectMapper mapper = new ObjectMapper();
User user = new User("Alice", 25);
String jsonString = mapper.writeValueAsString(user);
tree model
Tree model是Jackson提供的另一种序列化Json数据的方法。它通常用于处理复杂的Json数据结构。
要使用tree model,可以创建一个JsonNode对象,然后使用ObjectMapper对象的readTree()或createObjectNode()方法将其转换为Json格式。
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.createObjectNode();
JsonNode nameNode = mapper.createObjectNode();
nameNode.put("firstName", "Alice");
nameNode.put("lastName", "Smith");
rootNode.set("name", nameNode);
rootNode.put("age", 25);
String jsonString = mapper.writeValueAsString(rootNode);
Gson
Gson是Google开发的Java库,用于将Java对象序列化为Json格式,以及将Json格式反序列化为Java对象。Gson使用反射来解析Java对象,因此速度较慢,但由于其简单易用的API,仍然非常受欢迎。
将Java对象序列化为Json格式
要将Java对象序列化为Json格式,只需创建一个Gson对象,然后调用toJson()方法:
Gson gson = new Gson();
User user = new User("Alice", 25);
String jsonString = gson.toJson(user);
将Json格式反序列化为Java对象
要将Json格式反序列化为Java对象,只需调用fromJson()方法:
String jsonString = "{\"name\":\"Alice\",\"age\":25}";
User user = gson.fromJson(jsonString, User.class);
Fastjson
Fastjson是阿里巴巴出品的一个快速的Json处理工具箱,与其他Json工具相比,速度较快。其API简单易用,并且支持自定义序列化和反序列化规则。
将Java对象序列化为Json格式
要将Java对象序列化为Json格式,只需创建一个JSON对象,然后调用toJSONString()方法:
User user = new User("Alice", 25);
String jsonString = JSON.toJSONString(user);
将Json格式反序列化为Java对象
要将Json格式反序列化为Java对象,只需要调用parseObject()方法:
String jsonString = "{\"name\":\"Alice\",\"age\":25}";
User user = JSON.parseObject(jsonString, User.class);
示例
假设有一个班级信息,我们需要将其序列化为Json格式。
数据结构
public class Student {
private String name;
private int age;
private int score;
public Student() {}
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
// getter, setter ...
}
public class ClassInfo {
private String className;
private int totalStudents;
private List<Student> students;
public ClassInfo() {}
public ClassInfo(String className, int totalStudents, List<Student> students) {
this.className = className;
this.totalStudents = totalStudents;
this.students = students;
}
// getter, setter ...
}
Jackson示例
ObjectMapper mapper = new ObjectMapper();
// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = mapper.writeValueAsString(classInfo);
Gson示例
Gson gson = new Gson();
// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = gson.toJson(classInfo);
Fastjson示例
// 创建班级信息
ClassInfo classInfo = new ClassInfo();
classInfo.setClassName("Class A");
classInfo.setTotalStudents(2);
List<Student> students = new ArrayList<>();
students.add(new Student("Alice", 18, 90));
students.add(new Student("Bob", 19, 85));
classInfo.setStudents(students);
// 将对象转换为Json格式
String jsonString = JSON.toJSONString(classInfo);
总结
本文介绍了Java常用的格式化Json工具类:jackson、Gson和Fastjson。我们讲解了它们的基本用法,包括将Java对象序列化为Json格式以及将Json格式反序列化为Java对象。此外,我们还提供了示例代码,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深入浅析Java常用的格式化Json工具类 - Python技术站