2017 © Pedro Peláez
 

library jsonpathstreamer

JSON streaming

image

rdx/jsonpathstreamer

JSON streaming

  • Monday, November 20, 2017
  • by rudiedirkx
  • Repository
  • 1 Watchers
  • 0 Stars
  • 9 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 29 % Grown

The README.md

JSON Path Streamer

Build Status Scrutinizer Code Quality, (*1)

Uses salsify/jsonstreamingparser to parse a JSON file, and stream its tokens. This package adds features to simplify that process., (*2)

In a very big JSON file, it's very important to know where the parser is, to know which few parts to keep. It provides an interface for that. For very simple JSON parsing, there's even a configurable method, without any more parse/JSON formatting logic., (*3)

See examples/ for more examples. Run examples/speed.php for a speed comparison., (*4)

DIY - Surgical precision

// MUST implement gotPath() and gotValue()
class MyListener extends \rdx\jsonpathstreamer\PathAwareJsonListener {
    public function gotPath(array $path) {
        // Ignore valueless paths (empty arrays etc)
    }

    public function gotValue(array $path, $value) {
        // Save only values within {"foo": {"bar": {...}}}
        if (array_slice($path, 0, 2) == ['foo', 'bar']) {
            // Ignore long "description" texts
            if (end($path) != 'description') {
                $this->rememberValue(array_slice($path, 2), $value);
            }
        }
    }

    // Optional
    public function stopAfter() {
        // Stop parsing after foo/bar because there's nothing I want there
        return ['#foo/bar/#'];
    }
}

Configurable - easy

// MUST implement getRules()
class MyListener extends \rdx\jsonpathstreamer\RegexConfigJsonListener {
    public function getRules() {
        // Save only "name", for all users into their original position
        return [
            '#^users/[^/]+/(name)(/|$)#',
            '#^offices/[^/]+/(name)(/|$)#',
        ];
    }
}

Configurable - conversion

// MUST implement getRules()
class MyListener extends \rdx\jsonpathstreamer\RegexTargetConfigJsonListener {
    public function getRules() {
        // Save only "name", for all users and offices, into the same list
        return [
            '#^users/([^/]+)/(name)(/|$)#' => 'entities/$1/$2',
            '#^offices/([^/]+)/(name)(/|$)#' => 'entities/$1/$2',
        ];
    }
}

The Versions

20/11 2017

dev-master

9999999-dev

JSON streaming

  Sources   Download

MIT

The Requires

 

The Development Requires

by Rudie Dirkx

20/11 2017

1.0

1.0.0.0

JSON streaming

  Sources   Download

MIT

The Requires

 

The Development Requires

by Rudie Dirkx