这是我们的一个JSON提要的示例:
{"wiggins": {
"id": "bkstir-04380-wdr-q",
"alertcolour": "yellow",
"infohvr": "",
"infoclk": "",
"warning": "10",
"warnhvr": "There are 10 files stuck in \\server.domain.co.uk\Country\Dept\Output",
"warnclk": "\\server.domain.co.uk\Country\Dept\Output",
"process": "abc-app-015 Spooler",
"processhvr": "",
"processclk": "http://xyz-abc-001.svr.domain.co.uk/monitors/39.html"
}}
反斜杠阻止php显示它,如果我有一个没有任何反斜杠的JSON然后它们显示正常,但我需要在那里显示页面的人需要转到链接的斜杠。为了让它现在正常工作,我还试过了stipslashes()
,但它并没有奏效。任何人都可以提供任何建议吗?谢谢。这是解析文件的代码(正如我所说,只要没有反斜杠,这个位就可以工作):
$path = "../../Admins/VBScript/Monitors/JSON/"; //where JSONs are stored
foreach (glob($path."*.json") as $file){ //loop through each file
$json = file_get_contents($file); //get JSON files
$data = json_decode($json, true); //parse the file
JSON文件在我测试过的网站上恢复有效。
答案 0 :(得分:3)
您的JSON无效。反斜杠必须像这样转义:
{"wiggins": {
"id": "bkstir-04380-wdr-q",
"alertcolour": "yellow",
"infohvr": "",
"infoclk": "",
"warning": "10",
"warnhvr": "There are 10 files stuck in \\\\server.domain.co.uk\\Country\\Dept\\Output",
"warnclk": "\\\\server.domain.co.uk\\Country\\Dept\\Output",
"process": "abc-app-015 Spooler",
"processhvr": "",
"processclk": "http://xyz-abc-001.svr.domain.co.uk/monitors/39.html"
}}
根据this question你可以使用
$json = str_replace('\\', '\\\\', $json);
修复你的JSON。
答案 1 :(得分:0)
根据现行标准,您的JSON数据不被视为有效JSON。使用JSONLint您的数据会抛出解析器错误,直到所有斜杠都被转义。您可以在此处阅读此标准:
JSON Data Standard
上述信息位于第4页,需要转发前向和后向固定字符。 JSON_ENCODE()和JSON_DECODE()将负责删除转义,因此HTML链接的格式应该有效。