json_decode没有处理带有\的字符串

时间:2014-05-13 15:18:40

标签: escaping json

我有一个ajax调用,我将json_string作为post变量发送。我在服务器上使用json_decode进行解码,但是当字符串中包含\时,它会失败。

    $arr = array("data-0"=>'{"id":"Ch35ZWIjfMwG5EUWlVJvGJGWeZi+j+v27AGX+qtUZ14=","pos_x1":"0","pos_y1":"0"}',
                "data-1"=>'{"id":"h+ZjS3+FBoEebtxsHGmgbr\Dy8zTmgrLjhcZH8z3enpw=","pos_x1":"1","pos_y1":"152"}');

foreach($arr as $key=>$val)
print_r(json_decode($val,true));

当我尝试运行上面的内容时,第二个值没有被解码。

" id"值是加密文本,因此无法控制。

尝试过addslashes,但没有用。

1 个答案:

答案 0 :(得分:0)

那是因为\D不是有效的转义序列。 addslashes会在所有"之前加上斜线,这会使情况变得更糟。

相反,请考虑修复您的JSON来源 - 我知道您说它是加密文本,但这并不意味着您无法正确地json_encode它获得它你的数据。