Json解析失败了

时间:2014-09-05 10:45:28

标签: json

所以我现在已经在JSON上苦苦挣扎了一段时间,但昨晚发生了一些奇怪的事情,即使我已经“逃脱它”也会出现错误,这是我的JSON字符串

var data = $.parseJSON('{"rows":[{"type":"row","width_class":"row new_row","column_class":"col3 column_model","columns":{"0":{"class":"column one","children":[]},"1":{"class":"column one","children":[{"type":"bullet-block","html":"<div class=\\"bullet-block-element\\"><ul><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>123</li><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>456</li><li style='padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");'>789</li></ul></div>","image":"http://example.com/includes/images/bulletins/large-0.png","size":"large","items":["123","456","789"]}]},"2":{"class":"column one","children":[]}}}]}');

这是通过

生成的
var data = $.parseJSON('<?= str_replace('\\','\\\\',base64_decode($data['d'])) ?>');

我只是失明或者我有太多的红牛?帮助将不胜感激!

2 个答案:

答案 0 :(得分:1)

json_encode执行转义,它会自动显示为JSON,您不需要$.parseJSON,它会在那里进行双重解码。

只需使用:

<?php
$php = array('test' => 'hi');

$data['d'] = base64_encode(json_encode($php)); // 'eyJ0ZXN0IjoiaGkifQ=='

?>


<script>

var data = <?php echo base64_decode($data['d']); ?>;
console.debug(data.test); // Prints 'hi' in the console ;-)

</script>

请参阅键盘:http://codepad.org/VmKGt0JD

答案 1 :(得分:0)

你也需要逃避'&#html标签中的样式

所以这将起作用

var data = $.parseJSON('{"rows":[{"type":"row","width_class":"row new_row","column_class":"col3 column_model","columns":{"0":{"class":"column one","children":[]},"1":{"class":"column one","children":[{"type":"bullet-block","html":"<div class=\\"bullet-block-element\\"><ul><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>123</li><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>456</li><li style=\'padding-left:36px;background-image:url(\\"http://example.com/includes/images/bulletins/large-0.png\\");\'>789</li></ul></div>","image":"http://example.com/includes/images/bulletins/large-0.png","size":"large","items":["123","456","789"]}]},"2":{"class":"column one","children":[]}}}]}');

复制并粘贴到fiddle