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

使用json_decode从Cookie获取值失败问题求助

问题:Cookie已在浏览器中显示有值,但json_decode解析后输出为空

我已经成功设置了Cookie,并且能在浏览器开发者工具中看到该Cookie已被设置且包含具体值,但使用print_r输出通过json_decode解析$_COOKIE['antennasNow']得到的结果时,输出为空。

浏览器显示Cookie已设置且包含值

当前无法正常获取值的代码

$additionalData = json_decode($_COOKIE['antennasNow'], true);
echo '<pre>';
print_r($additionalData);
echo '</pre>';

设置Cookie的代码(供参考)

setcookie('antennasNow', json_encode($cookieValue), time()+3600);

Cookie值的数组定义(供参考)

$cookieValue = array(
        'base_Sku' => $base_Sku,
        'vhf_UHF_Type' => $vhf_UHF_Type,
        'ptc_Type' => $ptc_Type,
        'type_700_800_900' => $type_700_800_900,
        'band' => $band,
        'polarization' => $polarization,
        'gain_Sku' => $gain_Sku,
        'exposed_Dipole_Az_Pattern' => $exposed_Dipole_Az_Pattern,
        'collinear_Az_Pattern' => $collinear_Az_Pattern,
        'panel_Az_Pattern' => $panel_Az_Pattern,
        'dual_Input' => $dual_Input,
        'narrowband_Connector' => $narrowband_Connector,
        'beamtilt' => $beamtilt,
        'null_Fill' => $null_Fill,
        'heavy_Duty' => $heavy_Duty,
        'invert_Mount' => $invert_Mount,
    );

我已参考以下Stack Overflow相关主题的建议:

  • PHP从Cookie中解析JSON
  • 将json_decode结果转为数组
  • 在Cookie中存储PHP数组

可能的原因及解决方法

  1. 检查原始Cookie值是否为有效JSON
    先输出未解析的$_COOKIE['antennasNow'],确认字符串格式是否正常:
echo '<pre>';
var_dump($_COOKIE['antennasNow']);
echo '</pre>';

如果发现存在多余转义符(比如\"),先使用stripslashes()处理后再解析:

$jsonStr = stripslashes($_COOKIE['antennasNow']);
$additionalData = json_decode($jsonStr, true);
print_r($additionalData);
  1. 修正Cookie的路径设置
    设置Cookie时若未指定path,默认仅当前路径可读取。修改代码指定根路径,确保全站可访问:
setcookie('antennasNow', json_encode($cookieValue), time()+3600, '/');
  1. 确保JSON编码安全
    使用JSON_HEX_QUOT等参数编码,避免特殊字符破坏Cookie存储结构:
setcookie('antennasNow', json_encode($cookieValue, JSON_HEX_QUOT), time()+3600, '/');
  1. 查看JSON解析错误信息
    通过json_last_error_msg()定位具体失败原因:
$additionalData = json_decode($_COOKIE['antennasNow'], true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'JSON解析错误:' . json_last_error_msg();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:07:41