- DESCRIPTION
- METHODS
  - `encode()`
  - `encode_pretty()`
  - `encode_bulk()`
  - `decode()`

# DESCRIPTION

This module uses JSON to Perl data structures into JSON strings, and to decode JSON strings into Perl data structures.

# METHODS

## `encode()`

        $bytes = $serializer->encode($ref);
        $bytes = $serializer->encode($str);

The "encode()" method converts array and hash refs into their JSON equivalents. If a string is passed in, it is returned as the UTF8 encoded version of itself. The empty string and `undef` are returned as is.

## `encode_pretty()`

        $bytes = $serializer->encode_pretty($ref);
        $bytes = $serializer->encode_pretty($str);

Works exactly as "encode()" but the JSON output is pretty-printed.

## `encode_bulk()`

        $bytes = $serializer->encode_bulk([\%hash,\%hash,...]);
        $bytes = $serializer->encode_bulk([$str,$str,...]);

The "encode_bulk()" method expects an arry ref of hashes or strings. Each hash or string is processed by "encode()" then joined together by newline characters, with a final newline character appended to the end. This is the special JSON format used for bulk requests.

## `decode()`

        $var = $serializer->decode($json_bytes);
        $str = $serializer->decode($bytes);

If the passed in value looks like JSON (ie starts with a `{` or `[` character), then it is decoded from JSON, otherwise it is returned as the UTF8 decoded version of itself. The empty string and `undef` are returned as is.