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
相关产品推荐
相关产品推荐

