Skip to content
This repository has been archived by the owner on Jul 4, 2022. It is now read-only.

qligier/tjson-parser

Repository files navigation

TJSON Parser

A TJSON parser written in PHP, using Phlexy as JSON lexer.

StyleCI Shield

Requirements

  • PHP 7.0 at minimum is needed;
  • The GMP extension.

Quick start

Installation

Install the library with composer:

composer require qligier/tjson-parser

Usage

$parser = new Kentin\TJSON\Parser;
$tjson = '{"message:u":"Hello World!"}';

var_dump($parser->parse($tjson));
/*
array(1) {
  'message' =>
  string(12) "Hello World!"
}
*/

Data mapping

  • Boolean values are returned as boolean;
  • Binary values are decoded and returned as string;
  • FloatingPoint values are returned as float;
  • Integer values are returned as GMP instance;
  • UnicodeString values are returned as string;
  • Timestamp values are returned as DateTime instance;
  • Array values are returned as indexed array;
  • Object values are returned as associative array;
  • Set values are returned as indexed array.

Compliance

This library tries to be fully compliant with the current draft-tjson-spec (April 15, 2017). Nonetheless, the following non-compliances are not excluded:

  • The library accepts various formatting for FloatingPoint and Integer values that could be forbidden by the spec.

Development

To check the library with Psalm (a static analysis tool for finding errors):

./vendor/bin/psalm

To execute the unit tests with PHPUnit (an unit testing framework):

./vendor/bin/phpunit

To check the library with Infection (a mutation testing framework):

./vendor/bin/infection --min-msi=100 --min-covered-msi=100

To check and fix the coding style with PHP Coding Standards Fixer (a tool to automatically fix PHP coding standards issues):

./vendor/bin/php-cs-fixer fix . --dry-run --diff
./vendor/bin/php-cs-fixer fix .