mehr-it/easy-json

为大文件提供简单的 JSON 处理(读取/写入)

1.0.3 2021-11-24 12:33 UTC

This package is auto-updated.

Last update: 2024-09-24 18:48:37 UTC


README

解析 JSON 文件

以下是一个解析大 JSON 文件的简单示例

(new JsonParser($fh))
    ->eachItem('Library.Books', function($parser, $index) {
        // this callback will be invoked for each book            

        $parser
            ->value('Author', $author)
            ->value('ISBN', $isbn)
            ->consume();

        // do s.th. with author and ISBN data

    })
    ->parse();

以下示例展示了如何收集值

(new JsonParser($fh))
    ->collectItemValues('Library.Books.ISBN', $isbns)
    ->parase();

// $isbns now holds the ISBNs of all books

待办事项:添加更多示例和详细信息

写入 JSON 文件

以下是一个写入 JSON 文件的简单示例

$builder = new JsonBuilder($fh);

$builder->write([
    'version' => '1.0',
    'users' => new JsonArray(function(JsonBuilder $builder) {
        foreach(getUsers() as $currUser) {
            yield ['name' => $currUser->name];
        }
    }),
]);

要强制使用特定的 JSON 数据类型,可以使用以下类

  • JsonArray
  • JsonObject
  • JsonNumber

资源

您可以不将所有流数据读入内存,直接将资源作为 JSON 字符串写入

$builder->write(new JsonResourceString($fh))

您可以选择将数据编码为 JSON

$builder->write(new JsonResourceString($fh, true))