public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { //创建对象 Gson gson = new Gson(); String string = response.body().string(); Log.d("TAG", "onResponse: "+string); try { JSONObject jsonObject = new JSONObject(string); int code = jsonObject.getInt("code"); if (code == 200) { JSONObject result = jsonObject.getJSONObject("result"); JSONArray list = result.getJSONArray("list"); handler.post(() -> onHttpListener.success(gson.fromJson(list.toString(), new TypeToken<List<FortuneResult>>() { }.getType()))); } else { handler.post(() -> onHttpListener.error(jsonObject.optString("msg", "数据错误"))); } } catch (JSONException e) { throw new RuntimeException(e); } } });什么意思
时间: 2023-06-25 14:04:08 浏览: 156
JSON、GSON解析json
这是一个使用OkHttp发送网络请求的代码段,其中包含了对服务器返回的数据进行处理的逻辑。具体来说:
1. 创建了一个Gson对象,用于将JSON字符串转换为Java对象。
2. 获取服务器返回的JSON字符串,并将其解析成JSONObject对象。
3. 从JSONObject对象中获取"code"字段的值,如果值为200,则表示请求成功,继续进行数据解析和处理;如果值不为200,则表示请求失败,直接回调onHttpListener.error()方法。
4. 如果请求成功,则从JSONObject对象中获取"result"字段的值,该值为一个JSONObject对象。
5. 从JSONObject对象中获取"list"字段的值,该值为一个JSONArray数组。
6. 将JSONArray数组中的每个元素转换为Java对象,并存储在一个List集合中。
7. 最后通过handler.post()方法回调onHttpListener.success()方法,将Java对象的List集合作为参数传递给回调方法。
8. 如果在解析JSON字符串时出现异常,则抛出RuntimeException异常。
阅读全文