这种json字符串PHP如何解析?

{"response_time":8999,"object":"http://10.1.17.61:80/v1/verify"},{"response_time":17000,"object":"http://10.1.17.61:80/v1/verify"}],"err_query":[],"resource_type":8,"request_count":6870,"response_time_total":7152990,"response_time":{"start_0_end_1000000":6870},"resource_name":"http://[rpc]token-internal.user.wxsqidc.cn/[10.1.17.61:80]/v1/verify","http_status_code":{"200":6870},"cross_machine_room":"\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD-->\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD"}

就是字符串里带了很多 \x**的东西,导致 PHPjson_decode失败,我只知道 \x5C 就是反斜杠 " \x22就是单个双引号" 那么其它呢,如何解决?

---后面补充 :
查到了,\x** 的东西就是 16进制字符,有一个在线转码网站,复制进去转出来是乱码来的,字符内容是其它人上报过来的,叫他们上报进规范处理可能可能使自己工作比较被动,那么,自己就无法处理了吗?

慕运维8079593
浏览 456回答 5
5回答

凤凰求蛊

在加密时单独对这个属性使用 urlencode 试试

Smart猫小萌

要求这个接口提供标准的json数据 使用以下函数替换一下 $str = "\\xE5\\xB9\\xBF\\xE5\\xB7\\x9E\\xE4\\xB8\\xAD\\xE8\\x83\\xBD-->\\xE5\\xB9\\xBF\\xE5\\xB7\\x9E\\xE4\\xB8\\xAD\\xE8\\x83\\xBD"; $rs = preg_replace_callback('/\\\\x(\w{2})/', function ($m) { return hex2bin($m[1]); }, $str); var_dump($rs);

幕布斯6054654

你的json数据都没复制对吧,数据明显有问题,我只截取了16进制那块,代码如下: $json = '{"cross_machine_room":"\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD-->\xE5\xB9\xBF\xE5\xB7\x9E\xE4\xB8\xAD\xE8\x83\xBD"}'; // 将16进制转10进制 $json2 = preg_replace_callback("/\\\[xA-F0-9]{3}/", function($match) {return hexdec($match[0]);}, $json); $data = json_decode($json2, true);
打开App,查看更多内容
随时随地看视频慕课网APP