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>
你需要躲避'
的,以及(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
Howcome JSON.stringify不这样做呢? – 2014-09-05 10:59:55
@SauliusAntanavicius如果您有兴趣,我还没有研究过它,[mdn](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)。我通常会手动转义所有内容(这里有大多数服务器端语言的函数) – Collett89 2014-09-05 11:05:39
,它会将JSON字符串分配给数据变量,但是我需要的数据实际上是json对象? – 2014-09-05 11:06:21
注意:PHP中没有引号,它不会是一个字符串,它是实际的数据。 – DanFromGermany 2014-09-05 11:07:22
你每天都会学到新的东西,谢谢! – 2014-09-05 11:11:29