需要保持反斜杠JSON饲料在PHP解析时(Need to keep backslashes in J

2019-10-21 05:06发布

这里是我们的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文件回来为有效对我测试过他们的网站上。

Answer 1:

您的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"
}}

根据这个问题,你可以使用

$json = str_replace('\\', '\\\\', $json);

修复您的JSON。



Answer 2:

根据地方标准的JSON数据不被认为是有效的JSON。 使用JSONLint您的数据,直到所有的斜杠转义引发分析器错误。 你可以在这里阅读本标准:
JSON数据标准
上面的信息是第4页上,并要求向前和向后固相线的字符进行转义。 JSON_ENCODE()和JSON_DECODE()会照顾去除逃逸,以及使你的HTML链接的格式应该是有效的。



文章来源: Need to keep backslashes in JSON feed when parsing in PHP
标签: php json parsing