PHP的json_encode和JS的JSON.stringify

Did*_*olo 5 javascript php json

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

JS:

token = JSON.stringify(params);
Run Code Online (Sandbox Code Playgroud)

PHP:

token = json_encode($_POST);
Run Code Online (Sandbox Code Playgroud)

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

(我试图修改\n\r\tPHP,PHP中的stripslashes,几个JS库)字符串的PHP版本总是有更多的字符.

Geg*_*ind 8

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

$php_string = json_encode($data, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
Run Code Online (Sandbox Code Playgroud)


小智 7

在JavaScript中,没有引号的JSON密钥是有效的.在PHP中,没有引号的JSON密钥无效.(事实上​​,正确的JSON语法是键上的引号.)

所以你是对的,差异来自JSON.stringify谁从你的整数键中删除引号.

  • 不可以。在 JavaScript 中,对象字面量属性名称可以是标识符,不需要加引号。但是 (1) 标识符不能是整数,因此它们必须被引用; (2) 在生成 JSON 时,JSON 规则仍然适用,因此所有属性名称必须是字符串,不能是标识符。 (4认同)