如果我使用了 json_encode(),还需要 json.parse 吗?
Do I need json.parse if I've used json_encode()?
我正在做一些广泛的测试,以了解 PHP 和 JS 变量、对象、数组等如何成功地相互传递。关于这个主题有很多令人困惑的问题/答案。
据我的测试显示,我可以创建多种 PHP 对象:
$testarray = ["this", "is", "me"];
$testobject = (object) array("this"=>"that", "is"=>"was", "me"=>"him");
$teststring = "this is me";
$testint = 9758.25;
然后我可以通过 json_encode()
(仍在 PHP)
echo '<script>
var testarray = '.json_encode($testarray).';
var testobject = '.json_encode($testobject).';
var teststring = '.json_encode($teststring).';
var testint = '.json_encode($testint).';
</script>';
当 运行 时,结果为:
<script>
var testarray = ["this","is","me"];
var testobject = {"this":"that","is":"was","me":"him"};
var teststring = "this is me";
var testint = 9758.25;
<script>
我只是想确认这个结果是,而且永远是,完全有效 JavaScript?我看不出有什么问题,但一些消息来源建议使用 JSON.parse()
。在这种情况下需要这样做吗?
我知道如果通过 JSON.stringify()
传递 JS 中的数组或对象,我必须解析它。
我也知道要将对象或数组从 JS 发送到 PHP,我必须使用 JSON.stringify()
和 json_decode()
才能使它们有效,但似乎 json_encode()
无需使用 JSON.parse()
?
即可生成有效的 JS
是的,它是有效的,因为 JSON 语法是 JavaScript 对象文字语法的子集。因此,如果您按照您所展示的方式将 JSON 编码的文本注入到生成的 JS 代码中,那么它的行为就像一个对象文字,就像您在那里手工编写的一样。
JSON.parse
如果您收到包含 JSON 编码文本到 JavaScript 变量的字符串(例如,作为 AJAX 请求的结果),则需要
JSON.parse
并需要将其从字符串转换为可用对象。
我正在做一些广泛的测试,以了解 PHP 和 JS 变量、对象、数组等如何成功地相互传递。关于这个主题有很多令人困惑的问题/答案。
据我的测试显示,我可以创建多种 PHP 对象:
$testarray = ["this", "is", "me"];
$testobject = (object) array("this"=>"that", "is"=>"was", "me"=>"him");
$teststring = "this is me";
$testint = 9758.25;
然后我可以通过 json_encode()
(仍在 PHP)
echo '<script>
var testarray = '.json_encode($testarray).';
var testobject = '.json_encode($testobject).';
var teststring = '.json_encode($teststring).';
var testint = '.json_encode($testint).';
</script>';
当 运行 时,结果为:
<script>
var testarray = ["this","is","me"];
var testobject = {"this":"that","is":"was","me":"him"};
var teststring = "this is me";
var testint = 9758.25;
<script>
我只是想确认这个结果是,而且永远是,完全有效 JavaScript?我看不出有什么问题,但一些消息来源建议使用 JSON.parse()
。在这种情况下需要这样做吗?
我知道如果通过 JSON.stringify()
传递 JS 中的数组或对象,我必须解析它。
我也知道要将对象或数组从 JS 发送到 PHP,我必须使用 JSON.stringify()
和 json_decode()
才能使它们有效,但似乎 json_encode()
无需使用 JSON.parse()
?
是的,它是有效的,因为 JSON 语法是 JavaScript 对象文字语法的子集。因此,如果您按照您所展示的方式将 JSON 编码的文本注入到生成的 JS 代码中,那么它的行为就像一个对象文字,就像您在那里手工编写的一样。
JSON.parse
如果您收到包含 JSON 编码文本到 JavaScript 变量的字符串(例如,作为 AJAX 请求的结果),则需要
JSON.parse
并需要将其从字符串转换为可用对象。