gpt4 book ai didi

javascript - 如何将 PHP 对象序列化为 JavaScript 对象(不是 JSON)

转载 作者:行者123 更新时间:2023-11-28 12:21:57 27 4
gpt4 key购买 nike

我使用了 json_encode($array); 将数组转换为 json。

[{"x":1418736600,"y":"82.2"},{"x":1418736900,"y":"82.2"}]

但我真正需要的是一个如下所示的 JavaScript 对象:

[{x:1418736600,y:"82.2"},{x:1418736900,y:"82.2"}]

为了简单起见,我想要一个不带引号的 JSON,但最好避免解析 json_encode 输出并使用更直接的方式。

可以用 PHP 实现这个功能吗?

最佳答案

除了使有效负载稍微小一点之外,没有必要这样做。如果在需要值的地方使用,json_encode 的输出是有效的 JavaScript 代码,例如:

var x = <?php echo json_encode($array); ?>;

引用的属性键是有效的 JavaScript。事实上,JSON 作为一个整体是 JavaScript 文字语法的一个子集。

可以在结果中抛出正则表达式。它可能永远不可能是完美的(JSON 与 HTML 一样,无法使用单个正则表达式正确解析),但在有限的域内您也许能够做到这一点。例如,这是一个简单的版本,可能适用于许多数据集,包括您的示例,但无论如何它都不能适用于所有数据集:

<?php
$str = json_encode($array);
$str = preg_replace('/"([A-Za-z0-9_$]+)":/', '$1:', $str);
?>
var x = <?php echo json_encode($array); ?>;

假设任何由 A-Z、a-z、0-9、_ 或 $ 组成的双引号之间紧跟冒号的内容都是键,并会删除引号。 (这不是有效 JavaScript identifier characters 的完整列表,它只是一个示例。)

但在我看来,节省下来的费用似乎不太值得。

当然,要正确执行此操作,您必须执行自己的序列化程序。这并没有那么难,只是一个处理数组和对象的递归函数。它仍然可以使用 json_encode 作为值。

关于javascript - 如何将 PHP 对象序列化为 JavaScript 对象(不是 JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36158097/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com