json中unicode问题

json格式的数据存入到数据库中,但是,由于字符串中的特殊情况,进行了转义,结果导致无法转回来。需要对其中的转义过的字符,先替换,再进行json的编解码,就可以了。

示例

针对下面复杂转义情况,如下解决:

首先但引号里面 的两个反斜杆,实际上算是一个。下面四个斜杆,代表真实的两个斜杆。所以如下,先替换:

<?php
$json = '[{\\"goods_num\\":\\"\\",\\"goods_name\\":\\"\\\\u8865\\\\u53d1\\\\u9f20\\\\u62c6\\\\u76d2\\\\u62c6\\\\u888b\\",\\"goods_remark\\":\\"\\"}]';
$json = <<<EOL
[{\"goods_num\":\"\",\"goods_name\":\"\\u8865\\u53d1\\u9f20\\u62c6\\u76d2\\u62c6\\u888b\",\"goods_remark\":\"\"}]
EOL;

$json = strtr($json,['\\"'=>'"','\\\\'=>'\\']);


echo $json;
echo json_encode(json_decode($json,true),JSON_UNESCAPED_UNICODE);