Helper Objects#

The helper objects allow you control how specific values are rendered. They are also designed to be JSON-transparent so you can get an equivalent JSON file by using json_encode(). This compatibility may be broken by some planned objects.

HexInteger#

Renders an integer in a hexadecimal form:

<?php

use Arokettu\Json5\Json5Encoder;
use Arokettu\Json5\Values\HexInteger;

$value = [
    'hex' => new HexInteger(0xdeadbeef),
];

echo Json5Encoder::encode($value);
echo json_encode($value, JSON_PRETTY_PRINT);
// JSON5
{
    hex: 0xDEADBEEF,
}
// JSON
{
    "hex": 3735928559
}

CommentDecorator#

Renders a value with comments. The commentBefore may be multiline, the commentAfter must be a single line:

<?php

use Arokettu\Json5\Json5Encoder;
use Arokettu\Json5\Values\CommentDecorator;

require __DIR__ . '/../vendor/autoload.php';

$value = new CommentDecorator([ // root level supported too
    'g' => new CommentDecorator(6.6743e-11, commentBefore: <<<TEXT
        This is the Gravitational constant
        Changing it may collapse the Universe
        TEXT, commentAfter: 'Universe is safe'),
], commentBefore: 'JSON5. This time this comment is really rendered by the lib');

echo Json5Encoder::encode($value);
echo json_encode($value, JSON_PRETTY_PRINT);
// JSON5. This time this comment is really rendered by the lib
{
    // This is the Gravitational constant
    // Changing it may collapse the Universe
    g: 6.6743e-11, // Universe is safe
}
// JSON
{
    "g": 6.6743e-11
}

JsonSerializable#

ext-json’s JsonSerializable works with this builder just like it works with json_encode.

Json5Serializable#

\Arokettu\Json5\Values\Json5Serializable.

Like JsonSerializable but it’s specific to this library.

Planned#

  • Compact objects and lists

  • Force newline

  • Standalone comments