PHP可以很方便的对数组进行json编码和解码。但是在使用的时候需要注意的是,只支持对UTF的内容。否则将操作失败。
另外,与其他编程语言不同的是PHP会对中文字符做unicode编码,最终是\u开头的字符串。
而且如果内容中带有一些特殊字符如/反斜杠会被转义。有些编程语言没有内置的json库,开发者可能会采用手拼的方式,可能会忽略部分转义字符。
这个时候传到服务器解析就会显示解析失败。NULL。因此我们可以采用兼容的方式处理这种情况。
像下面这种数组内容包含中文
$arr =["pathName"=>"/我是程序员.exe", "md5"=>"d41d8cd98f00b204e9800998ecf8427e"];
转换成json字符串如下
{"pathName":"\/\u6211\u662f\u7a0b\u5e8f\u5458.exe","md5":"d41d8cd98f00b204e9800998ecf8427e"}
如果传递过来的转义字符没有被转义解析将出错。可以如下兼容。
$json_str = str_replace("\\/","@@@@",$json_str); //对已经转义的内容做替换
$json_str = str_replace("\\","\\\\",$json_str); //把 \替换为 \\
$json_str = str_replace("@@@@","\\/",$json_str); //把原来转义的替换回来
$json = json_decode($json_str,true);