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

如何从PHP cURL返回的嵌套JSON响应中提取指定字段值

问题分析
  • 你尝试的所有提取方式都没有匹配到实际返回的JSON嵌套层级,从你给出的响应结构来看,name字段的完整父级链条是data -> body -> searchResults -> results,你之前的写法跳过了前面的多层父节点,所以无法读取到目标值。
  • 另外results是索引数组,不是关联数组,不能直接通过['name']读取属性,要么指定下标取特定位置的元素,要么遍历整个数组。
修复代码

首先在原有cURL执行逻辑后添加基础错误判断,避免后续调试踩坑:

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);

if ($err) {
    die("cURL请求错误: " . $err);
}

$json = json_decode($response, TRUE);
// 判断JSON解析是否正常
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解析错误: " . json_last_error_msg());
}

方案1:直接提取第一条结果的目标值

如果你只需要返回的第一条酒店的名称,可以直接指定数组下标:

// 按完整层级读取第一条结果的name
$fullName = $json['data']['body']['searchResults']['results'][0]['name'];
// 去掉末尾的,NJ后缀得到你要的目标值
$targetName = str_replace(", NJ", "", $fullName);
echo $targetName; // 输出Red Carpet Inn Newark/Irvington

方案2:遍历所有搜索结果提取所有酒店名称

如果你需要输出全部搜索结果的名称,就遍历正确的数组节点:

foreach ($json['data']['body']['searchResults']['results'] as $item) {
    $targetName = str_replace(", NJ", "", $item['name']);
    echo $targetName . "<br>";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:18:03