浅析Java中如何处理接口返回的JSON数据

 更新时间:2026年04月02日 09:02:48   作者:lifewange  
在 Java 里处理接口返回的 JSON,最常用的是 Jackson 或 Gson 这两个库,下面小编将用最简单,最实用的方式教你,快跟随小编一起学习一下吧

在 Java 里处理接口返回的 JSON,最常用的是 JacksonGson 这两个库。下面我用最简单、最实用的方式教你:拿到接口返回的 JSON 字符串 → 转成 Java 对象 / Map → 直接取值。

一、先引入依赖(二选一)

1. 使用 Jackson(Spring 默认,最常用)

Maven:

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

2. 使用 Gson(谷歌出品,轻量)

Maven:

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

二、假设接口返回 JSON 如下

{
  "code": 200,
  "msg": "请求成功",
  "data": {
    "id": 1001,
    "username": "zhangsan",
    "age": 25
  }
}

三、方式 1:JSON → Java 对象(最规范)

1. 先建实体类

import lombok.Data;
// 整体返回结构
@Data
public class ApiResult {
    private Integer code;
    private String msg;
    private User data;
}
// data 里的用户对象
@Data
public class User {
    private Integer id;
    private String username;
    private Integer age;
}

不用 Lombok 就手写 getter/setter。

2. Jackson 解析

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonTest {
    public static void main(String[] args) throws Exception {
        // 接口返回的 JSON 字符串
        String json = "{\"code\":200,\"msg\":\"请求成功\",\"data\":{\"id\":1001,\"username\":\"zhangsan\",\"age\":25}}";

        ObjectMapper mapper = new ObjectMapper();
        ApiResult result = mapper.readValue(json, ApiResult.class);

        // 直接取值
        System.out.println(result.getCode());    // 200
        System.out.println(result.getMsg());     // 请求成功
        System.out.println(result.getData().getUsername()); // zhangsan
    }
}

3. Gson 解析

import com.google.gson.Gson;

public class JsonTest {
    public static void main(String[] args) {
        String json = "{\"code\":200,\"msg\":\"请求成功\",\"data\":{\"id\":1001,\"username\":\"zhangsan\",\"age\":25}}";

        Gson gson = new Gson();
        ApiResult result = gson.fromJson(json, ApiResult.class);

        System.out.println(result.getCode());
        System.out.println(result.getData().getUsername());
    }
}

四、方式 2:JSON → Map(快速取值,不用建类)

适合不想写实体类、临时解析的场景。

Jackson 转 Map

ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.readValue(json, Map.class);

int code = (int) map.get("code");
String msg = (String) map.get("msg");

Map<String, Object> data = (Map) map.get("data");
String username = (String) data.get("username");

Gson 转 Map

Gson gson = new Gson();
Map<String, Object> map = gson.fromJson(json, Map.class);

double code = (double) map.get("code"); // Gson 数字默认 double
String username = (String) ((Map) map.get("data")).get("username");

五、结合你刚才的 POST 请求完整示例

把 POST 请求 + JSON 解析放一起:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.fasterxml.jackson.databind.ObjectMapper;

public class PostWithJsonParse {
    public static void main(String[] args) throws Exception {
        String url = "https://httpbin.org/post";
        String jsonParams = "{\"username\":\"test\",\"password\":\"123456\"}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .POST(HttpRequest.BodyPublishers.ofString(jsonParams))
                .header("Content-Type", "application/json")
                .build();

        // 获取返回 JSON
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        String json = response.body();

        // 解析 JSON
        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> resultMap = mapper.readValue(json, Map.class);

        System.out.println("url: " + resultMap.get("url"));
        System.out.println("data: " + resultMap.get("data"));
    }
}

六、常见小问题

字段名不一致:用 @JsonProperty("user_name")

JSON 数组:转 List<实体类>

JacksonList<User> list = mapper.readValue(json, new TypeReference<>(){});

null 值:解析不会报错,会自动为 null

到此这篇关于浅析Java中如何处理接口返回的JSON数据的文章就介绍到这了,更多相关Java处理接口返回的JSON数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringSecurity导致Redis压力大问题的解决方案

    SpringSecurity导致Redis压力大问题的解决方案

    在我们现有的系统中,用于登录的 Redis 服务器 CPU 占用率长期处于 90% 的高位,这一状况带来了极大的风险隐患,因此,本文旨在解决这个问题,下面小编给大家详细介绍SpringSecurity导致Redis压力大问题的解决方案,需要的朋友可以参考下
    2025-06-06
  • 详解jvm对象的创建和分配

    详解jvm对象的创建和分配

    这篇文章主要介绍了jvm对象的创建和分配的相关资料,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-03-03
  • 使用Spring Boot搭建Java web项目及开发过程图文详解

    使用Spring Boot搭建Java web项目及开发过程图文详解

    这篇文章主要介绍了使用Spring Boot搭建Java web项目及开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • SpringBoot2.X Devtools热部署实现解析

    SpringBoot2.X Devtools热部署实现解析

    这篇文章主要介绍了SpringBoot2.X Devtools热部署实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java发送form-data请求实现文件上传的示例代码

    java发送form-data请求实现文件上传的示例代码

    最近做一个需求,需要请求第三方接口上传文件,该请求类型是form-data请求,本文就来介绍一下java发送form-data请求实现文件上传的示例代码,感兴趣的可以了解一下
    2023-12-12
  • Java动态代理分析及简单实例

    Java动态代理分析及简单实例

    这篇文章主要介绍了 Java动态代理分析及简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • spring kafka @KafkaListener详解与使用过程

    spring kafka @KafkaListener详解与使用过程

    这篇文章主要介绍了spring-kafka @KafkaListener详解与使用,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Java开发中StepBuilder模式详解

    Java开发中StepBuilder模式详解

    Step builder多阶段步骤构造器模式是一种对象创建软件设计模式,与传统构建器模式进行比较时,步骤构建器模式提供了一些简洁的好处,这篇文章主要介绍了Java开发中StepBuilder模式的相关资料,需要的朋友可以参考下
    2026-01-01
  • springboot项目或其他项目使用@Test测试项目接口配置

    springboot项目或其他项目使用@Test测试项目接口配置

    这篇文章主要介绍了springboot项目或其他项目使用@Test测试项目接口配置,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • spring如何加载配置多个配置文件

    spring如何加载配置多个配置文件

    这篇文章主要介绍了spring如何加载配置多个配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论