常见的JSON处理库包括Jackson、Gson、FastJSON等。这些库提供了丰富的API,用于将Java对象转换为JSON字符串,以及将JSON字符串转换回Java对象。
使用Jackson库
public static void main(String[] args) {
try {
// 创建ObjectMapper实例
ObjectMapper objectMapper = new ObjectMapper();
// Java对象转换为JSON字符串
Person person = new Person("Alice", 28);
String jsonStr = objectMapper.writeValueAsString(person);
System.out.println("Java to JSON: " + jsonStr);
// JSON字符串转换为Java对象
Person personFromJson = objectMapper.readValue(jsonStr, Person.class);
System.out.println("JSON to Java: " + personFromJson);
} catch (Exception e) {
e.printStackTrace();
}
}
}
基于数组或嵌套情况下的处理:
public static void main(String[] args) {
try {
// 创建ObjectMapper实例
ObjectMapper objectMapper = new ObjectMapper();
// 创建包含嵌套数组的JSON字符串
String jsonStr = "{\"name\":\"John\",\"ages\":[25,30,35]}";
// 将JSON字符串转换为JsonNode
JsonNode jsonNode = objectMapper.readTree(jsonStr);
// 获取嵌套数组的元素
String name = jsonNode.get("name").asText();
JsonNode agesNode = jsonNode.get("ages");
// 遍历嵌套数组
System.out.println("Name: " + name);
System.out.println("Ages:");
for (JsonNode ageNode : agesNode) {
System.out.println(ageNode.asInt());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用Gson库
public static void main(String[] args) {
// 创建Gson实例
Gson gson = new Gson();
// Java对象转换为JSON字符串
Person person = new Person("Bob", 32);
String jsonStr = gson.toJson(person);
System.out.println("Java to JSON: " + jsonStr);
// JSON字符串转换为Java对象
Person personFromJson = gson.fromJson(jsonStr, Person.class);
System.out.println("JSON to Java: " + personFromJson);
}
基于数组或嵌套情况下的处理:
public static void main(String[] args) {
// 创建Gson实例
Gson gson = new Gson();
// 创建包含嵌套数组的JSON字符串
String jsonStr = "{\"name\":\"Bob\",\"ages\":[32,40,45]}";
// 将JSON字符串转换为JsonObject
JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class);
// 获取嵌套数组的元素
String name = jsonObject.get("name").getAsString();
JsonArray agesArray = jsonObject.getAsJsonArray("ages");
// 遍历嵌套数组
System.out.println("Name: " + name);
System.out.println("Ages:");
for (int i = 0; i < agesArray.size(); i++) {
System.out.println(agesArray.get(i).getAsInt());
}
}