解析PHP数组在JavaScript
我有一些PHP源代码,简单的键值数组这样的:解析PHP数组在JavaScript
return array('var1' => 'var2');
而且
return array('sub' => array('var1' => 'var2'));
,我需要把它解析为JavaScript对象,因为我有一个PHP库的JavaScript实现,我想用原始测试用例来测试兼容性。
有超过100个测试,所以手动转换是不实际的。
有没有简单的方法将这些转换成JavaScript对象而不使用PHP?
要真正回答你的问题 - 如何在不使用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()
即可。
谢谢,这比我想象的要简单得多。 – mabs 2013-04-22 03:03:46
您可以在PHP中使用json_encode()
,在JavaScript中使用JSON.parse()
。
如果我理解正确的话,你需要使用json_encode()这样的:
return json_encode(array('sub' => array('var1' => 'var2')));
返回值:{"sub":{"var1":"var2"}}
这应该工作!
<?# 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(通过Node.js等在浏览器中)对API的异步请求轻松地对此进行测试;
是否需要'JSON.parse'?如果你写'var object = array('var1'=>'var2')))?>;'而不是? – user2264587 2013-04-20 09:12:35
对象文字未在JSON中定义;它们在JavaScript的[对象字面值语法](https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Values,_variables,_and_literals#Object_literals)中定义。它们是相似的,但它们并不相同。 – naomik 2013-04-20 09:14:42
我认为JSON是对象文字语法的一个子集,因此如果某些东西是有效的JSON,它将是一个有效的文字? – user2264587 2013-04-20 09:17:48
为什么不使用JSON?为什么没有PHP? – elclanrs 2013-04-20 08:28:25
Json很好,但由于测试框架在node.js应用程序中运行,PHP不是一个好选择。 – mabs 2013-04-20 11:24:49