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

Android Volley中getInt()获取already_enrolled等整型字段返回错误值问题

问题根因及解决方案

1. 首要问题:缺失字段解析逻辑

你贴出的代码中完全没有对liked、already_enrolled两个字段的赋值逻辑,仅仅是在日志中打印了already_enrolled的值,没有将接口返回的对应值写入Subject实体类,实体类的这两个字段会保持初始化的默认值0,这是你取值始终为0的最直接原因。

2. 日志输出异常排查

你日志中id=8的对应already_enrolled打印值为0,和你贴出的接口响应不符,按以下步骤排查:

  • 先在onResponse回调第一行打印完整的接口响应内容,确认实际拿到的响应和你预期的一致:
Log.i("full_response", response.toString());

大概率是你请求携带的Authorization token无效,后端识别到未登录状态,直接返回了默认的未点赞、未报名状态(值为0)。

  • 如果确认响应内容确实符合预期,两个字段值为1,那是Android内置org.json包的类型解析兼容问题,部分版本对接口返回的整型如果隐式转为字符串类型时,getInt会返回默认值0,改用先取字符串再转整型的兼容写法即可。

最终修改代码

在解析循环中新增两个字段的解析逻辑即可:

// 放在其他字段赋值的位置,比如sbj.setEnrolleds之后即可
// 兼容写法适配所有情况
sbj.setLiked(Integer.parseInt(obj.optString("liked", "0")));
sbj.setAlready_enrolled(Integer.parseInt(obj.optString("already_enrolled", "0")));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:36:08