PHP的json_encode和JS的JSON.stringify

时间:2013-08-26 09:43:43

标签: php javascript json

我正在使用PHP和Javascript来构建某种Web服务。我尝试验证从JS发送到PHP的post参数计算的令牌。假设代码如下:

JS:

token = JSON.stringify(params);

PHP:

token = json_encode($_POST);

有人可以解释一下为什么两个结果JSON字符串的长度不一样吗?

(我试图修改PHP中的\n\r\t,PHP中的stripslashes,几个JS库)字符串的PHP版本总是有一些字符。

3 个答案:

答案 0 :(得分:6)

在JavaScript中,没有引号的JSON密钥有效。在PHP中,没有引号的JSON密钥无效。 (实际上,正确的JSON语法是使用键上的引号。)

所以你是对的,区别来自JSON.stringify从整数键中删除引号。

答案 1 :(得分:0)

实际上,我有一个整数,它在PHP中用双引号括起来但在JS中却没有。因为我只需要验证数据是否相同,而且我不关心这些值,所以我对所有双引号进行了条带化​​处理,并且它完成了这一操作。

答案 2 :(得分:0)

我遇到了同样的问题,我想比较编码的json字符串的加密版本。要使json_encode的输出与JavaScripts JSON.stringify相同,您可以执行以下操作:

$php_string = json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);