【发布时间】:2016-09-20 19:36:15
【问题描述】:
我在服务器上接收到一个 JSON 字符串,它必须通过 json_decode 进行转换。该字符串可能包含任何内容。在遇到一些难以重现的问题后,我尝试了以下测试:
$data = '{"client":"Test @#€%&-+()\/\\_*\""}';
$data = json_decode($data);
var_dump($data); die;
这将返回 NULL。如果我删除 \\,则代码有效。我在谷歌开发工具中试过这个,它在 Javascript 中工作。如何让它在 json_decode 中工作?
谢谢!
【问题讨论】:
-
这个字符串中的 \ 的作用是什么?逃避还是拥有文字 \ char?
-
使用 \\\ 或 \\\\ 将成功解码包含文字反斜杠 (`\`) 字符的 JSON 字符串。
-
@lolbas,已经尝试过,也返回 null。事实上, str_replace("\\\\", ...) 实际上根本不起作用。抱歉,AbraCadaver 忘记提及该字符串已被发送者(在本例中为 Android 设备)转义。所以 \\ 是文字 \ 字符。
-
echo $data;在解码之前检查它是否真的包含你想要的。 -
@MichałSznurawa 实际上我从这里发布的代码中删除了那部分。我经历了三个步骤,其中有几次尝试和 var_dump。数据和上面代码中json_decode之前的一样