package MojoX::JSON::XS;

use Mojo::Base 'Mojolicious::Plugin';
use strict;

use Mojo::Util qw(monkey_patch);
use JSON::XS;

our $VERSION = "0.01";

sub register
{
   monkey_patch "Mojo::JSON", encode => sub { return encode_json( $_[1] ); };
   monkey_patch "Mojo::JSON", decode => sub { return decode_json( $_[1] ); };
   monkey_patch "Mojo::JSON", j      => sub { if(ref $_[0]) { return encode_json( $_[0] ); }
                                              else          { return decode_json( $_[0] ); }
   };
}

1;

=encoding utf8

=head1 NAME

MojoX::JSON::XS - A JSON::XS backend replacement for Mojo::JSON

=head1 SYNOPSIS

   sub startup
   {
       # ...

       $self->plugin('MojoX::JSON::XS');

       # ...
   }


=head1 DESCRIPTION

Replaces Mojo::JSON methods encode, deocde and j with JSON::XS equivalient.
This gives faster processing, and removes the unnecessary encode of '/' chars in strings.

=head1 FEATURES

It does not gracefully handle or skip blessed hashes

=cut