+
95
-

同一个数组在js中JSON.stringfy和PHP的json_encode结果是一样吗?

同一个数组在js中JSON.stringfy和PHP的json_encode结果是一样吗?


网友回复

+
15
-

在大多数情况下,JavaScript 中的 JSON.stringify 和 PHP 中的 json_encode 会生成相同的 JSON 字符串。然而,由于两种语言在处理某些数据类型和边缘情况时的差异,结果可能会有所不同。以下是一些常见的差异和注意事项:

1. 数组和对象

对于普通的数组和对象,JSON.stringify 和 json_encode 的结果通常是相同的。

示例代码

JavaScript:

const arr = [1, 2, 3];
const jsonStringJS = JSON.stringify(arr);
console.log(jsonStringJS); // 输出: "[1,2,3]"

PHP:

<?php
$arr = [1, 2, 3];
$jsonStringPHP = json_encode($arr);
echo $jsonStringPHP; // 输出: "[1,2,3]"
?>
2. 键名处理

在 JavaScript 中,对象的键名总是被转换为字符串,而在 PHP 中,数组的键名如果是整数,则保持整数形式。

示例代码

JavaScript:

const obj = { 1: "one", "2": "two" };
const jsonStringJS = JSON.stringify(obj);
console.log(jsonStringJS); // 输出: {"1":"one","2":"two"}

PHP:

<?php
$arr = [1 => "one", "2" => "two"];
$jsonStringPHP = json_encode($arr);
echo $jsonStringPHP; // 输出: {"1":"one","2":"two"}
?>
3. 特殊值处理

JavaScript 和 PHP 在处理某些特殊值(如 NaN、Infinity、null、undefined)时会有所不同。

示例代码

JavaScript:

cons...

点击查看剩余70%

我知道答案,我要回答