NAME Types::JsonCoercions - coercions to and from JSON SYNOPSIS package Person { use Moo; use Types::Standard -types, use Types::JsonCoercions -types; has nicknames => ( is => 'ro', isa => ArrayRefJ[Str], coerce => 1, required => 1, ); } my $alice => Person->new( nicknames => [ 'Ali' ] ); my $bob => Person->new( nicknames => '["Bob","Rob"]' ); DESCRIPTION This module provides coercions to/from JSON for some of the types from Types::Standard. Coercions You can export coercions using: use Types::JsonCoercions -coercions; # or use Types::JsonCoercions qw( ToJSON FromJSON ); And they can be applied to existing type constraints like: isa => ArrayRef->plus_coercions( FromJSON ), coerce => 1, This also works with parameterized types: isa => ArrayRef->of( HashRef )->plus_coercions( FromJSON ), coerce => 1, The FromJSON coercion can be added to any arrayref-like or hashref-like type constraints, and will coerce strings via a JSON decoder. The ToJSON coercion can be added to string-like type constraints, and will coerce references via a JSON encoder. Types You can export the types like: use Types::JsonCoercions -types; # or use Types::JsonCoercions qw( StrJ RefJ ArrayRefJ HashRefJ ); The type constraint StrJ is provided as a shortcut for `Str->plus_coercions( ToJSON )`. The type constraints RefJ, ArrayRefJ, and HashRefJ are provided as shortcuts for `Ref->plus_coercions( FromJSON )`, etc. RefJ, ArrayRefJ, and HashRefJ are parameterizable as per the types in Types::Standard, so ArrayRefJ[Int] should just work. JSON Encoder/Decoder This module will use JSON::MaybeXS if it is installed, and will otherwise fall back to JSON::PP. BUGS Please report any bugs to . SEE ALSO Types::Standard. AUTHOR Toby Inkster . COPYRIGHT AND LICENCE This software is copyright (c) 2022 by Toby Inkster. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. DISCLAIMER OF WARRANTIES THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.