3

我有一些 PHP 源代码是简单的键值数组,如下所示:

return array('var1' => 'var2' );

return array('sub' => array( 'var1' => 'var2' ) );

而且我需要将它们解析为 JavaScript 对象,因为我有一个 PHP 库的 JavaScript 实现,我想使用原始测试用例测试兼容性。

有超过 100 个测试,因此手动转换是不切实际的。

有没有一种简单的方法可以在不使用 PHP 的情况下将它们转换为 JavaScript 对象?

4

4 回答 4

4

要真正回答您的问题——如何在不使用 PHP 的情况下将 PHP 的关联数组解析为 JSON——让我们使用一些 JavaScript 代码。

"array('sub' => array( 'var1' => 'var2' ) );".replace(/array\(/g, '{').replace(/\)/g, '}').replace(/=>/g, ':').replace(/;/g, '').replace(/'/g, '"');

这是假设您碰巧坐在一些源代码上并希望将其复制到Node.js应用程序中,并且所有数据看起来都像这样。如果数据恰好位于多行,如果您甚至想解析“return”/“;” 部分,如果某些数据包含索引数组,或者任何值包含我只是天真地解析掉的字符串,您必须使这个脚本更聪明一点。

正如其他人所说,如果您正在与 PHP 服务交互,只需使用json_encode().

于 2013-04-20T09:34:20.467 回答
2

这应该工作!

<?# somefile.php ?>
<script type="text/javascript">
    var json = '<?= json_encode(array('sub' => array( 'var1' => 'var2' ))) ?>';
    var object = JSON.parse(json);
    console.log(object);
</script>

输出

{
  sub: {
    var1: "var2"
  }
}

更常见的是,您会看到一个与语言无关的 API,它只提供 JSON 响应。您可以使用 JavaScript 对 API 的异步请求轻松测试这一点(在浏览器中,通过Node.js等);

于 2013-04-20T09:08:11.743 回答
1

如果我理解正确,您需要像这样使用json_encode()

return json_encode(array('sub' => array( 'var1' => 'var2' )));

返回值:{"sub":{"var1":"var2"}}

于 2013-04-20T08:29:37.007 回答
0

您可以json_encode()在 PHP 和JSON.parse()JavaScript 中使用。

于 2013-04-20T08:28:58.753 回答