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

Android中如何从指定JSON接口提取目标URL字段

解决JSON提取URL的问题

首先看接口返回的JSON结构:

{"file_length":300,"versions":[{"size":38267700,"url":"https:\/\/sto006.sh-content.com\/v\/01\/00158\/v4h6zad7kdr1_n\/v4h6zad7kdr1_n.mp4?t=x7xUQpMLNKmr2glDAIN6YetW_hucsU9gzLOq6ifOuWw&s=1677397458&e=129600&f=790153&sp=300&i=0.0","name":"n"}],"player_img":"https:\/\/sh-content.xyz\/v4h6zad7kdr1_xt.jpg"}

你的代码核心错误是尝试获取result字段,但该JSON中不存在这个键。正确的提取路径是:

  1. 从根JSON对象中获取versions数组
  2. 取出数组的第一个元素(当前数组仅包含一个对象)
  3. 从该对象中提取url字段

修正后的Volley请求代码如下:

RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, Url, null, response -> {
    try {
        // 获取versions数组
        JSONArray versionsArray = response.getJSONArray("versions");
        if (versionsArray.length() > 0) {
            // 获取数组第一个元素
            JSONObject versionObj = versionsArray.getJSONObject(0);
            // 提取目标URL
            String targetUrl = versionObj.getString("url");
            Log.d("name", targetUrl);
        } else {
            Log.d("name", "versions数组为空");
        }
    } catch (JSONException e) {
        e.printStackTrace();
        Toast.makeText(MainActivity.this, "解析JSON出错", Toast.LENGTH_SHORT).show();
    }
}, error -> {
    Toast.makeText(MainActivity.this, "请求数据失败", Toast.LENGTH_SHORT).show();
});
queue.add(jsonObjectRequest);

额外说明

  • 增加数组长度判断,避免数组为空时抛出异常
  • 细化异常提示,方便排查问题
  • JSON中转义的\/会在getString后自动转换为正常的/,无需额外处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:53:19