我有一个变量,其中包含json_encode中的路径 /用户/ crazy_bash /在线/测试/
但是json_encode将路径转换为:
\/users\/crazy_bash\/online\/test\/
为什么呢?如何显示正常路径?
代码
$pl2 = json_encode(array(
'comment' => $nmp3,
'file' => $pmp3
));
echo($pl2);
答案 0 :(得分:8)
这是完全合法的JSON,请参阅http://json.org/。在反序列化字符串时,\/
被转换为/
。如果输出由适当的JSON解析器反序列化,为什么要担心呢?
如果您坚持在输出中使用\/
,则可以使用str_replace()
:
// $data contains: {"url":"http:\/\/example.com\/"}
$data = str_replace("\\/", "/", $data);
echo $data; // {"url":"http://example.com/"}
请注意,通过字符串的定义,它仍然是有效的JSON:
答案 1 :(得分:3)
Escaped solidus是合法的。但是如果你想要一个没有转义的结果,请在json_encode选项中使用JSON_UNESCAPED_SLASHES
。但是,这是在PHP 5.4之后添加的。
因此,str_replace('\\/', '/', $pl2);
会有所帮助。
答案 2 :(得分:1)
您必须在使用前解码它。
json_decode()
答案 3 :(得分:0)
这就是json_encode
应该做的事情。在json_decode
或JSON.parse
之后,就可以了。
var f = {"a":"\/users\/crazy_bash\/online\/test\/"}
console.log(f.a); // "/users/crazy_bash/online/test/"
var h = JSON.parse('{"a":"\/users\/crazy_bash\/online\/test\/"}');
console.log(h.a); // "/users/crazy_bash/online/test/"
答案 4 :(得分:0)
我遇到了同样的问题,基本上你需要解码你的数据,然后进行编码,这样它就可以正常工作而不用条形码,检查代码。
$getData = json_decode($getTable);
$json = json_encode($getData);
header('Content-Type: application/json');
print $json;