Java JSON 解析全面指南

Java JSON 解析全面指南

目录

简介

Java 解析 JSON 的方式

使用 org.json

使用 Jackson

使用 Gson

使用 Fastjson

JSON 解析与序列化示例

对象转 JSON

JSON 转对象

JSON 数组解析

最佳实践

小结

参考资料

简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有良好的可读性和易解析性。在 Java 生态中,解析 JSON 主要有以下几种方式:

org.json:官方提供的轻量级 JSON 处理库。

Jackson:功能强大,支持序列化、反序列化和数据绑定,是业界标准之一。

Gson:由 Google 提供,易用性强,适用于 Android 和 Java 项目。

Fastjson:阿里巴巴开发的高性能 JSON 处理库,适用于高并发应用场景。

接下来,我们将详细介绍如何在 Java 中使用这些库来解析和生成 JSON。

Java 解析 JSON 的方式

使用 org.json

org.json 是最简单的 JSON 解析库,适合轻量级应用。

依赖

org.json

json

20210307

示例

import org.json.JSONObject;

public class OrgJsonExample {

public static void main(String[] args) {

String jsonStr = "{\"name\":\"Alice\",\"age\":25}";

// 解析 JSON 字符串

JSONObject jsonObject = new JSONObject(jsonStr);

System.out.println("姓名: " + jsonObject.getString("name"));

System.out.println("年龄: " + jsonObject.getInt("age"));

// 生成 JSON

JSONObject newJson = new JSONObject();

newJson.put("city", "Beijing");

newJson.put("country", "China");

System.out.println(newJson.toString());

}

}

使用 Jackson

Jackson 是最流行的 JSON 处理库,功能强大,支持对象与 JSON 互转。

依赖

com.fasterxml.jackson.core

jackson-databind

2.15.0

示例

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonExample {

public static void main(String[] args) throws Exception {

ObjectMapper objectMapper = new ObjectMapper();

// JSON 转对象

String jsonStr = "{\"name\":\"Alice\",\"age\":25}";

User user = objectMapper.readValue(jsonStr, User.class);

System.out.println(user);

// 对象转 JSON

String jsonOutput = objectMapper.writeValueAsString(user);

System.out.println(jsonOutput);

}

}

class User {

public String name;

public int age;

public User() {} // Jackson 需要默认构造器

@Override

public String toString() {

return "User{name='" + name + "', age=" + age + "}";

}

}

使用 Gson

Gson 由 Google 提供,API 简洁,适合 Android 项目。

依赖

com.google.code.gson

gson

2.10

示例

import com.google.gson.Gson;

public class GsonExample {

public static void main(String[] args) {

Gson gson = new Gson();

// JSON 转对象

String jsonStr = "{\"name\":\"Alice\",\"age\":25}";

User user = gson.fromJson(jsonStr, User.class);

System.out.println(user);

// 对象转 JSON

String jsonOutput = gson.toJson(user);

System.out.println(jsonOutput);

}

}

使用 Fastjson

Fastjson 是阿里巴巴的高性能 JSON 解析库,适用于高并发场景。

依赖

com.alibaba

fastjson

2.0.39

示例

import com.alibaba.fastjson.JSON;

public class FastjsonExample {

public static void main(String[] args) {

// JSON 转对象

String jsonStr = "{\"name\":\"Alice\",\"age\":25}";

User user = JSON.parseObject(jsonStr, User.class);

System.out.println(user);

// 对象转 JSON

String jsonOutput = JSON.toJSONString(user);

System.out.println(jsonOutput);

}

}

JSON 解析与序列化示例

对象转 JSON

使用 Jackson:

ObjectMapper objectMapper = new ObjectMapper();

User user = new User("Alice", 25);

String jsonString = objectMapper.writeValueAsString(user);

System.out.println(jsonString);

使用 Gson:

Gson gson = new Gson();

String jsonString = gson.toJson(user);

System.out.println(jsonString);

JSON 转对象

使用 Jackson:

User user = objectMapper.readValue(jsonString, User.class);

使用 Gson:

User user = gson.fromJson(jsonString, User.class);

JSON 数组解析

String jsonArrayStr = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";

List users = objectMapper.readValue(jsonArrayStr, new TypeReference>() {});

System.out.println(users);

最佳实践

选择合适的 JSON 库

轻量级应用:org.json

全面功能:Jackson

Android 应用:Gson

高性能需求:Fastjson

使用对象映射

避免 Map,推荐使用 POJO(Plain Old Java Object)。

处理异常

JSON 解析时可能会抛出 JSONException 或 IOException,应使用 try-catch 进行异常处理。

使用 @JsonProperty

在 Jackson 中,字段名与 JSON 不匹配时,可使用 @JsonProperty("json_name") 注解。

优化性能

在高并发场景下,可使用 Jackson 的 ObjectMapper 作为单例对象。

小结

本篇文章介绍了 Java 解析 JSON 的几种方式,包括 org.json、Jackson、Gson 和 Fastjson,并提供了详细的示例和最佳实践。希望对你有所帮助!

参考资料

Jackson 官方文档

Gson 官方文档

Fastjson 官方文档

在线JSON美化

相关推荐

小米5哪个系统版本最好?深入分析不同版本的优势和劣势
有看头显示设备离线
365bet娱乐游戏

有看头显示设备离线

📅 06-30 👀 4215
史上最全,西药相关名,附表格
bt365体育开户

史上最全,西药相关名,附表格

📅 06-30 👀 4664