mehr-it/easy-json

Easy JSON handling (read/write) for large files

1.0.3 2021-11-24 12:33 UTC

This package is auto-updated.

Last update: 2024-10-24 18:55:27 UTC


README

Parsing JSON files

Here is a simple example how to parse large JSON files:

(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();

The following example shows how values can be collected:

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

// $isbns now holds the ISBNs of all books

TODO: add more examples and details

Writing JSON files

Here is a simple example how to write JSON files:

$builder = new JsonBuilder($fh);

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

To force a specific JSON data type, you can use the following classes:

  • JsonArray
  • JsonObject
  • JsonNumber

Resources

You can write a resource as JSON string without reading all the stream data into memory:

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

You can optionally encode the data as JSON:

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