当前位置: 代码网 > it编程>编程语言>Java > 浅析Java中如何处理接口返回的JSON数据

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

2026年04月02日 Java 我要评论
在 java 里处理接口返回的 json,最常用的是 jackson 或 gson 这两个库。下面我用最简单、最实用的方式教你:拿到接口返回的 json 字符串 → 转成 java 对象 /

在 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数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com