colinodell / json5
PHP 兼容的 UTF-8 JSON5 解析器
v3.0.0
2024-02-09 13:06 UTC
Requires
- php: ^8.0
- ext-json: *
- ext-mbstring: *
Requires (Dev)
- mikehaertl/php-shellcommand: ^1.7.0
- phpstan/phpstan: ^1.10.57
- scrutinizer/ocular: ^1.9
- squizlabs/php_codesniffer: ^3.8.1
- symfony/finder: ^6.0|^7.0
- symfony/phpunit-bridge: ^7.0.3
README
这个库是 PHP 的 JSON5 参考实现 的分支。
JSON5 是一个与 JS 兼容的 JSON 扩展,它允许注释、尾随逗号、单引号字符串等。
{ foo: 'bar', while: true, this: 'is a \ multi-line string', // this is an inline comment here: 'is another', // inline comment /* this is a block comment that continues on another line */ hex: 0xDEADbeef, half: .5, delta: +10, to: Infinity, // and beyond! finally: [ 'some trailing commas', ], }
安装
通过 Composer
$ composer require colinodell/json5
用法
此包添加了一个 json5_decode()
函数,它是 PHP 内置 json_decode()
的直接替代品。
$json = file_get_contents('foo.json5'); $data = json5_decode($json);
它以相同的顺序接受相同的精确参数。有关详细信息,请参阅 PHP 文档。
为了达到最佳性能,它将尝试使用 PHP 的本地函数(通常快速失败)进行解析,然后回退到 JSON5。
异常
如果解析失败,此函数将始终抛出 SyntaxError
异常。这是 PHP 7.3 中引入的新 \JsonException
的子类。提供或省略 JSON_THROW_ON_ERROR
选项对此行为没有影响。
二进制/可执行文件
还提供了一个名为 json5
的二进制/可执行文件,您可以通过终端将其转换为普通 JSON。
Usage: json5 [OPTIONS] [FILE]
-h, --help Shows help and usage information
(Reading data from STDIN is not currently supported on Windows)
示例
转换名为 file.json5 的文件
json5 file.json5
转换文件并保存输出
json5 file.json5 > file.json
从 STDIN 转换
echo -e "{hello: 'world!'}" | json5
从 STDIN 转换并保存输出
echo -e "{hello: 'world!'}" | json5 > output.json
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全性
如果您发现任何安全问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
支持
除了标准支持外,您可以考虑 Tidelift 订阅以获得专业支持,并在新版本或安全问题时获得警报。
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。