1

这是我的原始代码:

$returnArray=array(
    'loginUrl'=>$url."/?page_id=2732",
    'clientNumber'=>$clientNumber,
    'clientName'=>$_SESSION['userName']
);
echo json_encode($returnArray);

这是我的接收端代码:

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$result = trim(curl_exec($ch));

curl_close($ch);

$result = json_decode($result,true);

最后是$resultvar_dump

string(194) "
{"loginUrl":"http:\/\/www.xxxxxxxxxxxx.co.il\/chtsystem\/?page_id=2732","clientNumber":"11111","clientName":"\u05d0\u05d1\u05d9 \u05d4\u05de\u05d3\u05d1\u05d9\u05e8 - www.yyy-yyyyyyy.co.il"}"

$result从解码中出来null,当打印我可以看到的 json 错误"JSON_ERROR_SYNTAX"

这里有什么问题?

4

1 回答 1

1

在 JSON 字符串中使用前导新行并没有错。但是您可能有一个 UTF-8 BOM 并且json_decode()无法应对。

BOM 最可能的来源是您的 IDE 或文本编辑器。验证其设置并确保 UTF-8 文件在没有 BOM 的情况下保存。这样的 BOM 不是强制性的,它通常只会产生类似这样的问题。

更新:

你可以替换这个:

var_dump($result);

... 有了这个:

var_dump(bin2hex($result));

...以获得更准确的 JSON 字符串内容视图。UTF-8 BOM将显示为:

efbbbf...
于 2012-11-16T09:29:36.307 回答