常见的处理JSON字符串工具

7

常见的处理JSON字符串工具

处理 JSON 数据在 Java 中非常常见,市面上有很多流行的 JSON 处理库(依赖)可供选择。下面是一些常见的 JSON 库及其使用方法和特点:


⭐ 常见 JSON 处理库(依赖)

名称 Maven 依赖 特点
Jackson com.fasterxml.jackson.core:jackson-databind 功能强大,Spring 默认支持
Gson com.google.code.gson:gson 谷歌开发,轻量,使用简单
Fastjson com.alibaba:fastjson 阿里出品,性能好,语法简洁
org.json org.json:json 官方最基础的实现,适合简单场景
Json-B jakarta.json.bind:jakarta.json.bind-api Java EE 标准的 JSON-Binding
Moshi com.squareup.moshi:moshi Square 出品,现代 Android 项目常用
JsonPath com.jayway.jsonpath:json-path 类似 XPath 的 JSON 查询语法

🔧 各依赖使用方式示例(以 POJO 转 JSON、JSON 转 POJO 为例)


1. Jackson

Maven依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

使用方式:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(object);  // POJO -> JSON
MyClass obj = mapper.readValue(json, MyClass.class); // JSON -> POJO

2. Gson

Maven依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

使用方式:

Gson gson = new Gson();
String json = gson.toJson(object); // POJO -> JSON
MyClass obj = gson.fromJson(json, MyClass.class); // JSON -> POJO

3. Fastjson

Maven依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.44</version>
</dependency>

使用方式:

String json = JSON.toJSONString(object); // POJO -> JSON
MyClass obj = JSON.parseObject(json, MyClass.class); // JSON -> POJO

4. org.json

Maven依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20230618</version>
</dependency>

使用方式:

JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "Tom");
String json = jsonObject.toString(); // 构建 JSON 字符串

String name = new JSONObject(json).getString("name"); // 解析 JSON

5. Jakarta JSON-B(JSON Binding)

Maven依赖:

<dependency>
    <groupId>jakarta.json.bind</groupId>
    <artifactId>jakarta.json.bind-api</artifactId>
    <version>3.0.0</version>
</dependency>

使用方式:

Jsonb jsonb = JsonbBuilder.create();
String json = jsonb.toJson(object); // POJO -> JSON
MyClass obj = jsonb.fromJson(json, MyClass.class); // JSON -> POJO

6. Moshi

Maven依赖:

<dependency>
    <groupId>com.squareup.moshi</groupId>
    <artifactId>moshi</artifactId>
    <version>1.15.0</version>
</dependency>

使用方式:

Moshi moshi = new Moshi.Builder().build();
JsonAdapter<MyClass> adapter = moshi.adapter(MyClass.class);
String json = adapter.toJson(object); // POJO -> JSON
MyClass obj = adapter.fromJson(json); // JSON -> POJO

7. JsonPath(用于 JSON 查询)

Maven依赖:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.8.0</version>
</dependency>

使用方式:

String name = JsonPath.read(jsonString, "$.store.book[0].author");

总结建议

使用场景 推荐库
通用强大、兼容 Spring Jackson
轻量简单、适合工具类封装 Gson
性能优先、国内主流项目 Fastjson
需要标准化 JavaEE 支持 JSON-B
简单快速处理 org.json
Android 项目 Moshi
JSON 查询与提取 JsonPath