如何使用 PHP 解码带有注释的 JSON 文件? [复制]
Posted
技术标签:
【中文标题】如何使用 PHP 解码带有注释的 JSON 文件? [复制]【英文标题】:How can I decode JSON files with comments using PHP? [duplicate] 【发布时间】:2019-02-13 01:02:47 【问题描述】:在一项任务中,我必须在 JSON 文件中编写 cmets 并使用 PHP 对其进行解码。我分享它。也许它可以帮助别人。正则表达式很难。
【问题讨论】:
当然,如果您将 cmets 添加到原来的 JSON 文件中,则它不再是 JSON 文件,因为 cmets 不是 JSON 规范的一部分!? 是的。确实如此。变成别的东西。它不再是 json。 所以它有点像说当C程序中有COBOL行时如何编译它! JSON 是一种机器对机器的数据传输格式,cmets 没有位置 我的意思是,这是一个需要解决的合法问题 - 肯定有一些人们打算成为 JSON 的文件示例,其中包含 cmets。但这就是说,这不是以前没有回答过的问题,因此发布和回答您自己的问题看起来就像您正在寻找轻松的声誉。这不是发布教程的网站。 【参考方案1】:用正则表达式删除 cmets
$jsonStringWithComments = file_get_contents ( "jsonFileWithComments.json" );
$pattern = '/(((?<!http:|https:)\/\/.*|(\/\*)([\S\s]*?)(\*\/)))/im';
$decodedObject = json_decode ( preg_replace ( $pattern, '', $jsonStringWithComments ) );
此正则表达式可以捕获“单行”cmets、开始双斜杠 // 或在斜杠星号 /* 和星号斜杠 */ 之间的“多行”cmets。
有了它,你可以像下面这样解析 JSON:
"lorem": "ipsum",
"dolor":/* inline comment */ "sit amet",
"consectetur": "adipiscing",
/*
multi
line
comment
*/
"Pellentesque": "ultrices",
//single line comment
"lectus": "nec",
"elit": "dictum",
"url": "http://example.com"
【讨论】:
以上是关于如何使用 PHP 解码带有注释的 JSON 文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章