0%

java中将json字符串转化成对象

java中将json字符串转化成对象

在 Java 中将 JSON 转化为对象,通常使用 JSON 解析库来实现。最常用的 JSON 解析库是 Jackson 和 Gson。下面介绍如何使用 Jackson 和 Gson 将 JSON 字符串转换为 Java 对象。

1. 使用 Jackson 将 JSON 转化为对象

Jackson 是一个功能强大的 JSON 处理库。它的 ObjectMapper 类可以轻松地将 JSON 转化为 Java 对象。

步骤:

  1. 添加 Jackson 依赖(Maven 项目):
1
2
3
4
5
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.3</version>
</dependency>
  1. 定义 Java 类(假设 JSON 表示一个 Person 对象):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Person {
private String name;
private int age;

// Getters and Setters
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;
}
}
  1. 使用 Jackson 的 ObjectMapper 将 JSON 字符串转换为 Java 对象:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"age\":30}";

ObjectMapper objectMapper = new ObjectMapper();
try {
Person person = objectMapper.readValue(json, Person.class);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
} catch (Exception e) {
e.printStackTrace();
}
}
}

输出:

1
2
Name: John
Age: 30

2. 使用 Gson 将 JSON 转化为对象

Gson 是由 Google 提供的轻量级 JSON 处理库,它可以很方便地将 JSON 转化为 Java 对象。

步骤:

  1. 添加 Gson 依赖(Maven 项目):
1
2
3
4
5
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
  1. 定义 Java 类(与 Jackson 示例中的 Person 类相同)。
  2. 使用 Gson 将 JSON 字符串转换为 Java 对象:
1
2
3
4
5
6
7
8
9
10
11
12
13
import com.google.gson.Gson;

public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"age\":30}";

Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);

System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}

输出:

1
2
Name: John
Age: 30

总结:

  • Jackson:功能强大、广泛使用,支持更多的高级功能(如流处理、注解等)。
  • Gson:轻量级,简单易用,适合基础的 JSON 解析。

两者都可以轻松将 JSON 转换为 Java 对象,具体使用哪一个可以根据项目需求来选择。

3. 使用 fastjson将 JSON 转化为对象

fastjson 是阿里巴巴开发的一款高效 JSON 解析库,它比 Jackson 和 Gson 更加轻量级和高效。使用 fastjson 可以快速将 JSON 字符串转换为 Java 对象。

  1. 使用 fastjson 将 JSON 转化为对象

步骤:

  1. 添加 fastjson 依赖(Maven 项目):
1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
  1. 定义 Java 类(与之前示例中的 Person 类相同):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Person {
private String name;
private int age;

// Getters and Setters
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;
}
}
  1. 使用 fastjson 将 JSON 字符串转换为 Java 对象:
1
2
3
4
5
6
7
8
9
10
11
12
13
import com.alibaba.fastjson.JSON;

public class Main {
public static void main(String[] args) {
String json = "{\"name\":\"John\", \"age\":30}";

// 使用 Fastjson 的 JSON 类将 JSON 字符串转换为 Java 对象
Person person = JSON.parseObject(json, Person.class);

System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}

输出:

1
2
Name: John
Age: 30
  1. 使用 fastjson 将对象转换为 JSON 字符串

Fastjson 还支持将 Java 对象转换为 JSON 字符串,类似于其他 JSON 解析库的 toJson() 方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import com.alibaba.fastjson.JSON;

public class Main {
public static void main(String[] args) {
Person person = new Person();
person.setName("John");
person.setAge(30);

// 将对象转换为 JSON 字符串
String jsonString = JSON.toJSONString(person);

System.out.println("JSON String: " + jsonString);
}
}

输出:

1
JSON String: {"age":30,"name":"John"}

总结:

  • Fastjson 提供了高效的 JSON 解析能力,并且使用方式简洁易懂。
  • 和 Jackson、Gson 一样,Fastjson 也可以快速将 JSON 字符串转换为 Java 对象,并且能将对象转换回 JSON 字符串。