No description, website, or topics provided.
Perl6 Perl
Latest commit 2e09d90 Feb 12, 2017 @tadzik committed on GitHub Merge pull request #23 from jonathanstowe/null-typed
Handle null attribute
Permalink
Failed to load latest commit information.
lib/JSON Add multi to handle the null case Feb 12, 2017
t Add test for null coercion Feb 12, 2017
.gitignore Add .gitignore Nov 30, 2015
LICENSE add MIT license Oct 31, 2015
META.info Up version Feb 12, 2017
README.md Whitespace fixes Dec 23, 2015

README.md

JSON::Unmarshal

Make JSON from an Object (the opposite of JSON::Marshal)

Synopsis

    use JSON::Unmarshal;

    class SomeClass {
        has Str $.string;
        has Int $.int;
    }

    my $json = '{ "string" : "string", "int" : 42 }';

    my SomeClass $object = unmarshal($json, SomeClass);

    say $object.string; # -> "string"
    say $object.int;    # -> 42

It is also possible to use a trait to control how the value is unmarshalled:


    use JSON::Unmarshal

    class SomeClass {
        has Version $.version is unmarshalled-by(-> $v { Version.new($v) });
    }

    my $json = '{ "version" : "0.0.1" }';

    my SomeClass $object = unmarshal($json, SomeClass);

    say $object.version; # -> "v0.0.1"

The trait has two variants, one which takes a Routine as above, the other a Str representing the name of a method that will be called on the type object of the attribute type (such as "new",) both are expected to take the value from the JSON as a single argument.

Description

This provides a single exported subroutine to create an object from a JSON representation of an object.

It only initialises the "public" attributes (that is those with accessors created by declaring them with the '.' twigil. Attributes without acccessors are ignored.

Installation

Assuming you have a working perl6 installation you should be able to install this with ufo :

ufo
make test
make install

ufo can be installed with panda for rakudo:

panda install ufo

Or you can install directly with "panda":

# From the source directory

panda install .

# Remote installation

panda install JSON::Unmarshal

Other install mechanisms may be become available in the future.

Support

This should be considered experimental software until such time that Perl 6 reaches an official release. However suggestions/patches are welcomed via github at

https://github.com/tadzik/JSON-Unmarshal

Licence

Please see the LICENCE file in the distribution

(C) Tadeusz Sośnierz 2015