2013-01-21 44 views
0

我已经快疯了这一个:JSON解析单qoutes

我有这个代码:

var names = JSON.parse('<?php echo json_encode($names); ?>'); 

哪里$names是在它的UTF-8含量的数组。

哪些工作正常,但当$names阵列包含'我开始得到unexpected token/charachter错误。

我尝试了所有不同类型的东西,如:

var names = JSON.parse('<?php echo 
json_encode(str_replace("'","\'",$names),JSON_HEX_APOS | JSON_HEX_QUOT); ?>'); 

var names = JSON.parse('<?php 
echo json_encode($names,JSON_HEX_APOS | JSON_HEX_QUOT); ?>'); 

和非帮助。我得到Uncaught SyntaxError: Unexpected token错误。

var names = JSON.parse('{"1":{"136":{"0":"135 \u05dc\u05dc\u05d0 
\u05d4\u05d2\u05d1\u05dc\u05d4"},"75":{"0":"\u05d1\u05d5\u05e0\u05d5\u05e1 75"},"199": 
    {"0":"\u05d1\u05d5\u05e0\u05d5\u05e1 199"},"5":{"0":"card bonus 5"},"30": 
    {"0":"\u05e1\u05dc\u05e7\u05d5\u05dd \u05d4\u05d5\u05d3\u05e2\u05d5\u05ea"},"40":{"0":"40 
    \u05e2\u05e8\u05d1\u05d9\u05ea"}],"37":[{"0":"\u05d6\u05e8\u05d5 
\u05d0\u05e0\u05d2\u05dc\u05d9\u05ea"}],"38":[{"0":"\u05d6\u05e8\u05d5 
\u05e8\u05d5\u05e1\u05d9\u05ea"}],"39": 
[{"0":"\u05d6\u05e8\u05d5 \u05d8\u05d0\u05d9"}]}'); 

这是一个非常长的字符串,我只是减半,所以语法可能会显示不正确,但总的想法。我怎样才能解析数组?

我使用的是PHP 5.3,所以我不能尝试JSON_UNESCAPED_SLASHESJSON_UNESCAPED_UNICODE如果它是相关的。

回答

3

有效的JSON是有效的JavaScript;你可以简单的写:

var names = <?php echo json_encode($names); ?>; 

至于UTF-8字符,这里是一个测试:

<script> 
alert(<?php echo json_encode("\xE2\x82\xAC"); ?>); // should alert € 
</script> 
+0

但随后试图使用var我得到未定义的,因为它不是定义为有效对象时。 –

+0

@vdp:no。 'json_decode'负责所有的转义。 –

+0

@ eric.itzhak:我?我从哪里来? –