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

Android新手求助:Volley解析JsonArray获取number和step字段问题

解决Volley解析JSONArray获取number和step的问题

别担心,作为Android新手遇到这种JSON解析问题太正常了,我帮你找出代码里的问题并修正它!

你的代码核心问题

你在内层遍历steps数组的时候,错误地使用了外层循环的变量i,而不是内层的a——这会导致要么取到错误的数据,要么直接抛出数组越界的JSONException。具体就是这行代码出了问题:

JSONObject recipe_step = arrayStatus.getJSONObject(i);

应该用内层循环的变量a来索引steps数组才对。

修正后的完整代码

JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, uri, null, 
    new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            String count, step;
            try {
                Log.d("VolleyResponse","Response:" + response);
                // 遍历外层的食谱JSONArray
                for(int i = 0; i < response.length(); i++){
                    JSONObject currentRecipe = response.getJSONObject(i);
                    // 获取当前食谱的steps数组
                    JSONArray stepsArray = currentRecipe.getJSONArray("steps");
                    // 遍历steps数组里的每一步
                    for(int a = 0; a < stepsArray.length(); a++){
                        // 这里必须用内层的a来索引steps数组,不能用外层的i!
                        JSONObject stepObj = stepsArray.getJSONObject(a);
                        count = stepObj.getString("number");
                        step = stepObj.getString("step");
                        steps.append("Step " + count + ":" + step + "\n\n");
                    }
                }
            } catch(JSONException e){
                e.printStackTrace();
                Log.e("JsonParseError", "解析出错:" + e.getMessage());
            }
        }
    }, 
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("VolleyError", error.toString());
        }
    }
);

给Android新手的小提示

  • 给变量起更清晰的名字,比如把current改成currentRecipe,arrayStatus改成stepsArray,这样代码可读性更高,也不容易搞混循环变量。
  • 在catch块里加上错误信息日志,能帮你快速定位解析时的具体问题(比如某个字段不存在、类型不匹配)。
  • 如果steps是TextView这类UI组件,不用担心线程问题——Volley的onResponse方法本来就在主线程里执行,直接更新UI没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:34:18