JSON解析失败了蓝色

问题描述:

所以我一直在挣扎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'])) ?>'); 

我只是为盲人或有我有太多的红牛?帮助将不胜感激!

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

+0

,它会将JSON字符串分配给数据变量,但是我需要的数据实际上是json对象? – 2014-09-05 11:06:21

+0

注意:PHP中没有引号,它不会是一个字符串,它是实际的数据。 – DanFromGermany 2014-09-05 11:07:22

+1

你每天都会学到新的东西,谢谢! – 2014-09-05 11:11:29

你需要躲避'的,以及(S在html标签tyles)

所以这将工作

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

+0

Howcome JSON.stringify不这样做呢? – 2014-09-05 10:59:55

+0

@SauliusAntanavicius如果您有兴趣,我还没有研究过它,[mdn](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)。我通常会手动转义所有内容(这里有大多数服务器端语言的函数) – Collett89 2014-09-05 11:05:39