NAME

MarpaX::ESLIF::JSON::Decoder - ESLIF's JSON decoder interface

VERSION

version 6.0.12

DESCRIPTION

This is JSON's strict and relax decoder writen directly in MarpaX::ESLIF library.

There are two JSON modes:

Strict

Encoder and decoder are strict, as per ECMA-404 The JSON Data Interchange Standard.

Relax

This is strict grammar extended with:

Unlimited commas
Trailing separator
Perl style comment
C++ style comment
Infinity
NaN
Unicode's control characters (range [\x00-\x1F]).

METHODS

MarpaX::ESLIF::JSON::Decoder->new($eslif[, $strict])

my $eslifJSONDecoder = MarpaX::ESLIF::JSON::Decoder->new($eslif);

Returns a JSON grammar instance, noted $eslifJSONDecoder later. Parameters are:

$eslif

MarpaX::ESLIF object instance. Required.

$strict

A true value means strict JSON, else relax JSON. Default is a true value.

$eslifJSONDecoder->decode($string, %options)

my $value = $eslifJSONDecoder->decode($string);

Returns a value containing decoded $string. In relax mode, special floating point are supported:

+Infinity

Positive infinity, either as a native floating point number if the underlying system supports that, or as a Math::BigInt-binf()> instance.

-Infinity

Negative infinity, either as a native floating point number if the underlying system supports that, or as a Math::BigInt-binf('-')> instance.

NaN

Not-a-Number, either as a native floating point number if the underlying system supports that, or as a Math::BigInt-bnan()> instance.

Supported options are:

encoding

Input encoding. Can be undef.

disallowDupkeys

A true value will disallow duplicate keys. Default is a false value.

maxDepth

Maximum depth. Default is 0, meaning no limit.

noReplacementCharacter

A true value will disallow UTF-8 replacement character for invalid UTF-16 surrogates. Default is a false value.

NOTES

Formally, the JSON implementation is only a grammar coded directly in the ESLIF library, therefore this module inherits from MarpaX::ESLIF::Grammar.

AUTHOR

Jean-Damien Durand <jeandamiendurand@free.fr>

COPYRIGHT AND LICENSE

This software is copyright (c) 2017 by Jean-Damien Durand.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.