为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕运维8079593 2019-03-18 18:09:02
{"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进制字符,有一个在线转码网站,复制进去转出来是乱码来的,字符内容是其它人上报过来的,叫他们上报进规范处理可能可能使自己工作比较被动,那么,自己就无法处理了吗?
查看完整描述

5 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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

查看完整回答
反对 回复 2019-03-18
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

  1. 要求这个接口提供标准的json数据

  2. 使用以下函数替换一下

$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);
查看完整回答
反对 回复 2019-03-18
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

你的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);
查看完整回答
反对 回复 2019-03-18
  • 5 回答
  • 0 关注
  • 455 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信