我同时使用 PHP 和 Javascript 来构建某种 Web 服务。我尝试验证从 JS 发送到 PHP 的后参数计算的令牌。假设代码如下:
JS:
token = JSON.stringify(params);
PHP:
token = json_encode($_POST);
有人可以解释一下为什么两个生成的 JSON 字符串的长度不同吗?
(我尝试在 PHP 中修剪\n\r\t,在 PHP 中修剪斜杠,几个 JS 库)字符串的 PHP 版本总是有更多的字符。
我同时使用 PHP 和 Javascript 来构建某种 Web 服务。我尝试验证从 JS 发送到 PHP 的后参数计算的令牌。假设代码如下:
JS:
token = JSON.stringify(params);
PHP:
token = json_encode($_POST);
有人可以解释一下为什么两个生成的 JSON 字符串的长度不同吗?
(我尝试在 PHP 中修剪\n\r\t,在 PHP 中修剪斜杠,几个 JS 库)字符串的 PHP 版本总是有更多的字符。
我遇到了同样的问题,我想比较编码的 json 字符串的加密版本。要使输出json_encode与 javascripts 相同,JSON.stringify您可以执行以下操作:
$php_string = json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
在 JavaScript 中,不带引号的 JSON 键是有效的。在 PHP 中,没有引号的 JSON 键是无效的。(事实上,正确的 JSON 语法是在键上加上引号。)
所以你是对的,区别在于JSON.stringify谁从你的整数键中去掉引号。
实际上,我有一个整数,它在 PHP 中用双引号括起来,但在 JS 中没有。因为我只需要验证数据是否相同,而且我不关心值,所以我去掉了所有的双引号,它就成功了。