NAME
    JSON::Types - variable type utility for JSON encoding

SYNOPSIS
        # Export type functions by default
        use JSON;
        use JSON::Types;
    
        print encode_json({
            number => number "123",
            string => string 123,
            bool   => bool "True value",
        });
        # => {"number":123,"string":"123","bool":true}
    
    
        # Non export interface
        use JSON::Types ();
    
        print encode_json({
            number => JSON::Types::number "123",
            string => JSON::Types::string 123,
            bool   => JSON::Types::bool "True value",
        });

DESCRIPTION
    The type mappings between JSON and Perl is annoying things. For example,

        use JSON;
    
        my $number = 123;
    
        warn "[DEBUG] number:$number\n" if $ENV{DEBUG};
    
        print encode_json([ $number ]);

    Output of this code depends on whether DEBUG environment is set or not.
    If set, result is "[123]". If not to set, result is "["123"]". This is
    normal behaviour on Perl though, it sometimes causes unexpected JSON
    results.

    There is a solution about this:

        print encode_json([ $number + 0 ]);

    This code always outputs "[123]". But the code is a bit ugly and not
    readable at all.

    This module provides some functions to fix this variable types issue:

        number $foo;  # is always number
        string $foo;  # is always string
        bool   $foo;  # is always bool

    You can fix above code by using this module like this:

        use JSON;
        use JSON::Types;
    
        my $number = 123;
    
        warn "[DEBUG] number:$number\n" if $ENV{DEBUG};
    
        print encode_json([ number $number ]);

FUNCTIONS
    There is three functions and all functions is exported by default.

    If you don't want this exported functions, pass empty list to use line:

        use JSON::Types ();

    You should specify full function name when this case, like
    "JSON::Types::number $foo" or etc.

  string
  number
  bool
AUTHOR
    Daisuke Murase <typester@cpan.org>

COPYRIGHT AND LICENSE
    Copyright (c) 2012 Daisuke Murase. All rights reserved.

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

    The full text of the license can be found in the LICENSE file included
    with this module.