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

Android API 28中如何解析OkHttp返回的API JSON响应?

从OkHttp Response中解析JSON响应的实现方案

步骤1:创建对应JSON结构的实体类

根据API返回的JSON结构({"mesagge":"message","status":"S"},注意字段拼写为mesagge,若为笔误请自行修正),创建匹配的Java实体类:

public class JsonResult {
    private String mesagge; // 需与API返回的字段名完全一致,若API实际是message则同步修改
    private String status;

    // Getter、Setter方法
    public String getMesagge() {
        return mesagge;
    }

    public void setMesagge(String mesagge) {
        this.mesagge = mesagge;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

步骤2:修改AsyncTask中的响应解析逻辑

在doInBackground方法的注释位置,添加以下代码完成响应获取与解析:

try {
    Response response = client.newCall(request).execute();

    //------Get response message here--------
    if (response.isSuccessful()) {
        // 读取响应体字符串
        String responseBody = response.body().string();
        // 用Gson将JSON字符串解析为实体类对象
        JsonResult jsonResult = new Gson().fromJson(responseBody, JsonResult.class);
        
        // 提取解析后的数据
        String message = jsonResult.getMesagge();
        String status = jsonResult.getStatus();
        
        // 此处可根据业务需求处理数据,比如日志打印或传递到UI线程
        Log.d("ResponseInfo", "消息:" + message + ",状态:" + status);
    } else {
        Log.e("RequestFail", "请求失败,响应码:" + response.code());
    }
    // 必须关闭响应体,避免资源泄漏
    if (response.body() != null) {
        response.body().close();
    }

} catch (IOException e) {
    e.printStackTrace();
} catch (Exception e){
    e.printStackTrace();
}

额外提示

  • 确保项目已引入Gson依赖,Gradle下可在build.gradle中添加:implementation 'com.google.code.gson:gson:2.10.1'(版本可按需调整)。
  • AsyncTask在Android API 28及之后已被标记为Deprecated,后续版本升级建议改用Coroutine或ExecutorService替代。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:02:34