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

PHP调用YouTube转MP3 API返回字符串如何转数组/JSON对象?

问题根源

你混淆了json_encode和json_decode的功能:

  • json_encode:用于将PHP数组/对象转换为JSON格式字符串,你调用的接口本身返回的就是标准JSON字符串,再次调用encode相当于把字符串又做了一次序列化,自然还是字符串类型,无法通过下标取值
  • json_decode:用于将JSON格式字符串转换为PHP可操作的数组/对象,才是你需要用到的方法

修复步骤

  1. 替换loader方法中返回部分的逻辑,将json_encode改为json_decode,传入第二个参数true即可得到关联数组,支持通过下标直接读取字段
  2. 你示例中的接口返回自带转义斜杠(比如{\"Status\"格式),可以先调用stripslashes()处理后再解码,避免解码失败
  3. 新增JSON解码异常判断,避免接口返回异常时产生PHP报错

修改后完整代码

$response = $YouTubeLink->loader($_GET["ID"]); // 调用后直接可以用 $response['Title'] 等下标取对应字段

function loader($ID)
{
    $curl = curl_init();
    curl_setopt_array($curl, [
        CURLOPT_URL => "https://youtube-to-mp32.p.rapidapi.com/api/yt_to_mp3?video_id=$ID",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_HTTPHEADER => [
            "x-rapidapi-host: youtube-to-mp32.p.rapidapi.com",
            "x-rapidapi-key: a3ab095a57msh2d08de201b482cbp1559dcjsnaa6636261faa"
        ],
    ]);
    $response = curl_exec($curl);
    $err = curl_error($curl);
    curl_close($curl);
    if ($err) {
        echo "cURL Error #:" . $err;
        return [];
    } else {
        // 先去除转义斜杠,再转成关联数组
        $response = stripslashes($response);
        $result = json_decode($response, true);
        // 处理解码失败的情况
        if (json_last_error() !== JSON_ERROR_NONE) {
            return [];
        }
        return $result;
    }
}

取值示例

修改完成后可直接通过下标读取对应字段:

echo $response['Status']; // 输出 Success
echo $response['Title']; // 输出视频标题
echo $response['Download_url']; // 输出下载链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:24:03