You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HttpResponse的JSON直接转换为Java 17 Record?

Java 17 HttpClient响应JSON转Java Record方案

Java 17的标准库(包括HttpClient)确实没有内置JSON与Java对象(含Record)的序列化/反序列化能力,必须借助第三方JSON处理库,Jackson是最常用的选择之一(Jackson 2.12及以上版本原生支持Java Record)。

实现步骤

  1. 引入Jackson依赖
    如果使用Maven,在pom.xml中添加:

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.2</version> <!-- 使用最新稳定版本即可 -->
    </dependency>
    
  2. 编写完整代码
    先定义你的Record:

    record GetBearerTokenResponse(String access_token, String expires_in, String token_type) {}
    

    接着结合HttpClient完成请求与转换:

    // 建议将HttpClient和ObjectMapper设为全局单例,避免重复初始化
    HttpClient httpClient = HttpClient.newHttpClient();
    ObjectMapper objectMapper = new ObjectMapper();
    
    // 构建GET请求
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("目标API地址"))
            .GET()
            .build();
    
    // 发送请求并获取响应
    HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
    
    // 将JSON响应直接转换为Record实例
    GetBearerTokenResponse tokenResp = objectMapper.readValue(response.body(), GetBearerTokenResponse.class);
    
    // 直接访问Record的组件
    System.out.println("获取到的Token: " + tokenResp.access_token());
    

补充说明

  • 若API返回的字段名与Record组件名不匹配,可通过Jackson的@JsonProperty注解手动指定映射关系
  • ObjectMapper是线程安全的,全局复用能提升性能

内容的提问来源于stack exchange,提问作者Stanislav Ivanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:28:10