主流json解析框架示例
jackson、gson、fastjson/fastjson2三种主流json解析框架对比
● 性能:在性能方面,Fastjson通常被认为是最快的JSON解析库,其次是Jackson和Gson,json-lib的性能相对较低。
● API和功能:Jackson提供了非常灵活、强大的API,支持各种高级功能,例如树模型、数据绑定、注解等。Gson也提供了简单易用的API,但功能相对较少。Fastjson提供了丰富的功能和选项,但API可能相对复杂一些。json-lib在功能上相对较弱。
● 社区和支持:Jackson和Gson拥有广泛的社区支持和文档,使用者较多,问题容易获得解答。Fastjson由于其阿里巴巴的背景,在中国有较大的用户群体。目前建议使用Fastjson2。
● 使用场景:对于性能要求较高的场景,可以选择Fastjson。对于需要强大功能和灵活性的场景,Jackson是一个不错的选择。对于简单的JSON解析任务,Gson提供了简单易用的API。json-lib因为其开发已停止,不建议在新项目中使用。
使用示例
引入pom依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.4</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.40</version>
</dependency>
接下来,分别编写使用Jackson、Gson、Fastjson和json-lib的代码来完成以下任务:
- 将Java对象转换为JSON字符串;
- 将JSON字符串转换为Java对象。
/**
* @author shui
* @description 测试Json
* @created 2024/7/12
*/
public class JsonProcessExample {
public static void main(String[] args) {
User user = new User("John", 30);
// 使用Jackson
System.out.println("Using Jackson:");
jacksonDemo(user);
// 使用Gson
System.out.println("Using Gson:");
gsonDemo(user);
// 使用Fastjson
System.out.println("Using Fastjson:");
fastjsonDemo(user);
}
private static void jacksonDemo(User user) {
try {
// 将Java对象转换为JSON字符串
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(user);
System.out.println("Serialized JSON: " + json);
// 将JSON字符串转换为Java对象
User deserializedUser = objectMapper.readValue(json, User.class);
System.out.println("Deserialized User: " + deserializedUser);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void gsonDemo(User user) {
try {
// 将Java对象转换为JSON字符串
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println("Serialized JSON: " + json);
// 将JSON字符串转换为Java对象
User deserializedUser = gson.fromJson(json, User.class);
System.out.println("Deserialized User: " + deserializedUser);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void fastjsonDemo(User user) {
try {
// 将Java对象转换为JSON字符串
String json = JSON.toJSONString(user);
System.out.println("Serialized JSON: " + json);
// 将JSON字符串转换为Java对象
User deserializedUser = JSON.parseObject(json, User.class);
System.out.println("Deserialized User: " + deserializedUser);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class User{
private String name;
private int age;
// 无参构造函数(必须有)
public User() {}
public User(String name, int age) {
this.name = name;
this.age = age;
}
// getter和setter方法(必须有)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
标签:name,示例,age,json,JSON,User,解析,user
From: https://www.cnblogs.com/shui-notes/p/18299355