| Jifty documentation | Contained in the Jifty distribution. |
Jifty::JSON -- Wrapper around JSON
use Jifty::JSON qw/decode_json encode_json/;
my $obj = decode_json(q! { "x": "1", "y": "2", "z": "3" } !);
my $json = encode_json($obj);
Provides a thin wrapper around the JSON 2.xx library, which provides a frontend for JSON::XS and JSON::PP.
This module used to wrap JSON::Syck and JSON 1.xx with special-casing for outputting JSON with single quoted values. Single quotes make it easy to simply plop JSON into HTML attributes but are in violation of the JSON spec which mandates only double quoted strings.
The old behavior is now unsupported and it is recommended that you simply HTML escape your entire blob of JSON if you are sticking it in an HTML attribute. You can use Jifty->web->escape() to properly escape problematic characters for HTML.
These functions are just like JSON's, except that you can pass options to
them like you can with JSON's from_json and to_json functions.
By default they encode/decode using UTF8 (like JSON's functions of the same
name), but you can turn that off by passing utf8 => 0 in the
options. The allow_nonref flag is also enabled for
backwards compatibility with earlier versions of this module. It allows
encoding/decoding of values that are not references.
JSON is imported with the -support_by_pp flag in order to support all
options that JSON::PP provides when using JSON::XS as the backend. If
you are concerned with speed, be careful what options you specify as it may
cause the pure Perl backend to be used. Read JSON::PP SUPPORT METHODS in JSON
for more information.
These functions are deprecated and provided for backwards compatibility. They
wrap the appropriate function above, but croak in Carp if you try to set the
singlequote option.
Jifty is Copyright 2005-2010 Best Practical Solutions, LLC. Jifty is distributed under the same terms as Perl itself.
| Jifty documentation | Contained in the Jifty distribution. |
use warnings; use strict; package Jifty::JSON; use base 'Exporter'; our @EXPORT_OK = qw/jsonToObj objToJson decode_json encode_json/; use Carp qw//; use JSON qw/ -support_by_pp -no_export /;
sub decode_json { JSON::from_json( $_[0], { utf8 => 1, allow_nonref => 1, %{$_[1] || {}} } ); } sub encode_json { JSON::to_json( $_[0], { utf8 => 1, allow_nonref => 1, %{$_[1] || {}} } ); }
sub jsonToObj { my $args = $_[1] || {}; Carp::croak("Attempted to set 'singlequote' option, but it is no longer supported.". " You may need to HTML escape the resulting JSON.". " Please read the POD of Jifty::JSON and fix your code.") if exists $args->{'singlequote'}; decode_json( @_ ); } sub objToJson { my $args = $_[1] || {}; Carp::croak("Attempted to set 'singlequote' option, but it is no longer supported.". " You may need to HTML escape the resulting JSON.". " Please read the POD of Jifty::JSON and fix your code.") if exists $args->{'singlequote'}; encode_json( @_ ); }
1;