当使用 volley 的 jsonobjectrequest 请求返回 json 数组(而非 json 对象)的接口时,会因类型不匹配导致请求静默失败;正确做法是改用 jsonarrayrequest。
Android Volley 是一个轻量、高效的网络通信库,但其请求类对响应数据格式有严格要求:JsonObjectRequest 仅适用于服务器返回顶层为 JSON 对象(即以 { 开头)的响应;而 JsonArrayRequest 才适用于返回顶层为 JSON 数组(即以 [ 开头)的接口。
你调用的接口 https://krokapp.by/api/rest/tags/?format=json 实际返回的是如下结构(已简化):
[
{"id": 1, "name": "android"},
{"id": 2, "name": "volley"},
{"id": 3, "name": "kotlin"}
]
这是一个标准的 JSON 数组,因此若强行使用 JsonObjectRequest,Volley 在解析阶段会抛出 JSONException: Value […] of type org.json.JSONArray cannot be converted to JSONObject,但该异常默认不会触发 ErrorListener 中的回调(尤其在较旧版本 Volley 中),导致“无日志、无响应、看似成功实则失败”的典型现象。
✅ 正确解决方案是替换请求类型,并保持其余逻辑不变: