此包已被废弃,不再维护。作者建议使用webmozart/json包。

用于处理JSON数据的包,侧重于性能

1.0.2 2019-08-26 18:17 UTC

README

Release License Code Quality Build

不再维护

此仓库不再维护,已被弃用。强烈不建议使用。

我们不需要另一个Json包,因为它既没有需求,也没有独特或有用的功能。让我们关注更重要的事情,或者至少是改进现有的库、项目等。如果您认为这是一个错误的决定(例如,您是这个库的活跃用户,找不到替代方案),请提交一个问题。

这个仓库应被视为我所做工作的展示。您可以自由地切换到develop分支,猜测2.0.0版本会是什么样子,并思考它如何解决任何问题。

此库的替代方案是Webmozart Json

这是什么?

您的JSON数据组件。嗯!就这么简单?不!请继续阅读。

为什么是JSON?

性能

注意:遗憾的是,该库的性能似乎不可扩展。微观优化的一个亮点。专注于最不重要的事情的结果。请参阅#59以获取更多详细信息。

灵活

  • Json不仅用于JSON数据。那么呢?支持许多类型,包括JSON字符串、数组、对象和标量(+ null)。资源不受支持,也不会支持(因为标准)。
  • 无论数据类型如何,都可以使用方法。合并两个对象?实际上。
  • 使用可调用对象执行任何操作,即使类中没有提供。替代方案?从类扩展并定义自己的内容。当然,两种情况都很容易。
  • 哦,如果索引不存在怎么办?异常。解析错误的JSON数据?再次异常。警告和通知?非常罕见的情况。

多种方式

像JavaScript的点来获取索引,还是原生PHP数组?选择。即使使用JavaScript-like索引,您也可以将索引传递给方法,或者可以使用Json::index()。这是您的决定。

示例

来自PHPUnit源代码的一个示例

function prettify(string $json): string {
    $decodedJson = \json_decode($json, true);

    if (\json_last_error()) {
        throw new Exception(
            'Cannot prettify invalid json'
        );
    }

    return \json_encode($decodedJson, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES);
}

看起来不错,但可以更好

// use MAChitgarha\Component\Json

function prettify(string $jsonStr): string {
    return Json::new($jsonStr)->getAsJson(\JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES);
}

优势

  • 处理不同异常更容易。不仅仅是得到“无法美化无效的JSON”。根据发生的错误获取异常消息。调试将更容易。
  • 代码更少。看起来更漂亮。一行。此外,有时您甚至不需要定义该方法,可以直接使用Json而不需要函数开销。

好!我需要什么?

几乎什么都没有。PHP7默认包含的JSON扩展,以及通常的Composer。

安装

Composer已经存在了!

composer require machitgarha/json

注意:您也可以克隆项目并按照自己的方式加载文件。不过,推荐的方式是使用Composer。

文档

注意:该文档已过时,针对1.0.0+版本。

请参阅GitHub维基

贡献?

尽管该库不再维护,但您可以在这里查看贡献指南。