php-jsonpointer/php-jsonpointer

Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)

Installs: 35 105

Dependents: 4

Stars: 35

Watchers: 8

Forks: 5

Open Issues: 0

v1.1.0 2015-05-20 23:07 UTC

README

Build Status Version PHP Version

This is an implementation of JSON Pointer written in PHP. Triggered by @janl's node.js implementation and being a bit bored.

Installation via Composer

$ composer require php-jsonpointer/php-jsonpointer

Usage

Now you can use JSON Pointer for PHP via the available Composer autoload file.

<?php require_once 'vendor/autoload.php';

use Rs\Json\Pointer;
use Rs\Json\Pointer\InvalidJsonException;
use Rs\Json\Pointer\NonexistentValueReferencedException;

$invalidJson = '{"Missing colon" null}';

try {
    $jsonPointer = new Pointer($invalidJson);
} catch (InvalidJsonException $e) {
    $message = $e->getMessage(); // Cannot operate on invalid Json. Message: Parse error on line 1: ...
}

$json = '{"foo":1,"bar":{"baz":2},"qux":[3,4,5],"m~n":8,"a/b":0,"e^f":3}';
$jsonPointer = new Pointer($json);

try {
    $all = $jsonPointer->get(""); // string('{"foo":1,"bar":{"baz":2},"qux":[3,4,5],"m~n":8,"a/b":0,"e^f":3}')
    $one = $jsonPointer->get("/foo"); // int(1)
    $two = $jsonPointer->get("/bar/baz"); // int(2)
    $three = $jsonPointer->get("/qux/0"); // int(3)
    $four = $jsonPointer->get("/qux/1"); // int(4)
    $five = $jsonPointer->get("/qux/-"); // int(5)
    $five = $jsonPointer->get("/qux/" . Pointer::LAST_ARRAY_ELEMENT_CHAR); // int(5)
    $zero = $jsonPointer->get("/a~1b"); // int(0)
    $eight = $jsonPointer->get("/m~0n"); // int(8)
    $three = $jsonPointer->get("/e^f"); // int(3)
    $nonexistent = $jsonPointer->get("/qux/7");
} catch (NonexistentValueReferencedException $e) {
    $message = $e->getMessage(); // Json Pointer '/qux/7' reference a nonexistent value
}

Running tests

$ composer test

License

This library is licensed under the MIT License. Please see LICENSE for more information.

Changelog

Please see CHANGELOG for more information.