colinodell/json5

v3.0.0 2024-02-09 13:06 UTC

This package is auto-updated.

Last update: 2024-09-17 23:55:37 UTC


README

Latest Version on Packagist PHP 8.0+ Software License Build Status Coverage Status SensioLabs Insight UTF-8 Compatible Total Downloads

这个库是 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',
    ],
}

有关更多示例和详细信息,请参阅 JSON5 网站。.

安装

通过 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

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何安全问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。

支持

除了标准支持外,您可以考虑 Tidelift 订阅以获得专业支持,并在新版本或安全问题时获得警报。

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件