php – Javascript解码包含编码字符串的JSON字符串

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – Javascript解码包含编码字符串的JSON字符串脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下 PHP代码

$foo = new stdClass();
    $foo->test='hello world';
    $bar = new stdClass();
    $bar->foo = json_encode($foo);
    $encoded_string = json_encode($bar);

$encoded_string包含:

{"foo":"{\"test\":\"hello world\"}"}

我想从javascript解析这个字符串(例如使用jquery的$.parseJSON):

VAR data = $.parseJSON('{"foo":"{\"test\":\"hello world\"}"}');
console.LOG(data);

我希望记录以下内容

Object {foo: '{"test":"hello world"}'}

但是在运行它时会出现意外的令牌错误(使用铬)

何在Javascript中解析这个json字符串? Here’s a fiddle,如果有人想尝试.

解决方法

您遇到的问题是json_encode的输出不能直接用作JavaScript中的字符串.

json_encode输出一个可用的JavaScript对象:

<?PHP
$foo = new stdClass();
$foo->test='hello world';
$bar = new stdClass();
$bar->foo = json_encode($foo);
$encoded_string = json_encode($bar);
?>
var a = <?PHP $encoded_string ?>;
console.log(a.foo); // PRoduces '{"test":"hello world"}'

如果你想从字符串值中不必要地解析JSON输出,你只需要对$encoded_string进行双重编码:

<?PHP
$foo = new stdClass();
$foo->test='hello world';
$bar = new stdClass();
$bar->foo = json_encode($foo);
$encoded_string = json_encode(json_encode($bar));
?>
var aStr = <?PHP $encoded_string ?>;
var a = JSON.parse(aStr);
console.log(a.foo); //same as before

当然,您应该避免使用服务器端语言来生成JavaScript代码,而是将数据设置为data-* attribute或可以使用AJAX请求的JSON.

当从服务器(或从属性)请求数据时,它将作为正确转义的JavaScript字符串,这是解析对象所需的JSON.parse.

脚本宝典总结

以上是脚本宝典为你收集整理的php – Javascript解码包含编码字符串的JSON字符串全部内容,希望文章能够帮你解决php – Javascript解码包含编码字符串的JSON字符串所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。