JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简单易读、易于解析而广泛使用。在Java中处理JSON数据可以通过多种方法,小编将介绍几种常用的方式,包括使用 org.json 库、Gson 库和 Jackson 库。
1. 使用 org.json 库处理JSON数据
org.json 是一个流行的JSON处理库,它提供了简单易用的API来解析和生成JSON数据。
示例:
添加依赖(Maven):
xmlCopy Code<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
解析JSON字符串:
javaCopy Codeimport org.json.JSONObject;
import org.json.JSONArray;
public class JSONExample {
public static void main(String[] args) {
String jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// 解析JSON
JSONObject jsonObject = new JSONObject(jsonString);
// 访问数据
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
String city = jsonObject.getString("city");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
// 生成JSON
JSONObject newJsonObject = new JSONObject();
newJsonObject.put("name", "Alice");
newJsonObject.put("age", 25);
newJsonObject.put("city", "Los Angeles");
System.out.println("Generated JSON: " + newJsonObject.toString());
}
}
2. 使用 Gson 库处理JSON数据
Gson 是 Google 提供的一个开源库,用于将Java对象与JSON进行相互转换。它支持更复杂的数据结构和自定义序列化/反序列化。
示例:
添加依赖(Maven):
xmlCopy Code<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
解析和生成JSON:
javaCopy Codeimport com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Map;
public class GsonExample {
public static void main(String[] args) {
Gson gson = new Gson();
String jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
// 解析JSON
Map<String, Object> map = gson.fromJson(jsonString, new TypeToken<Map<String, Object>>() {}.getType());
String name = (String) map.get("name");
double age = (Double) map.get("age");
String city = (String) map.get("city");
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
// 生成JSON
Person person = new Person("Alice", 25, "Los Angeles");
String jsonOutput = gson.toJson(person);
System.out.println("Generated JSON: " + jsonOutput);
}
static class Person {
private String name;
private int age;
private String city;
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
}
}
3. 使用 Jackson 库处理JSON数据
Jackson 是另一个流行的JSON处理库,它提供了高效的JSON数据绑定功能,支持复杂的数据模型和自定义处理。
示例:
添加依赖(Maven):
xmlCopy Code<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.1</version>
</dependency>
解析和生成JSON:
javaCopy Codeimport com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.JsonNode;
public class JacksonExample {
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();
String jsonString = "{ \"name\": \"John\", \"age\": 30, \"city\": \"New York\" }";
try {
// 解析JSON
JsonNode jsonNode = mapper.readTree(jsonString);
String name = jsonNode.get("name").asText();
int age = jsonNode.get("age").asInt();
String city = jsonNode.get("city").asText();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("City: " + city);
// 生成JSON
Person person = new Person("Alice", 25, "Los Angeles");
String jsonOutput = mapper.writeValueAsString(person);
System.out.println("Generated JSON: " + jsonOutput);
} catch (Exception e) {
e.printStackTrace();
}
}
static class Person {
private String name;
private int age;
private String city;
public Person(String name, int age, String city) {
this.name = name;
this.age = age;
this.city = city;
}
// 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;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
}
在Java中处理JSON数据,可以选择不同的库来适应不同的需求和场景。org.json 库提供了基础的JSON处理功能,适合简单的使用场景;Gson 和 Jackson 提供了更为丰富和复杂的功能,适合处理复杂的数据结构和高级的序列化/反序列化需求。根据项目的需求选择合适的库,可以帮助你高效地处理JSON数据。