---
name: "Search::Elasticsearch::Role::Serializer::JSON"
section: "3pm"
platform: "linux"
package: "libsearch-elasticsearch-perl"
version: "8.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Search::Elasticsearch::Role::Serializer::JSON"
---

# Search::Elasticsearch::Role::Serializer::JSON(3pm)

A Serializer role for JSON modules

## NAME

Search::Elasticsearch::Role::Serializer::JSON - A Serializer role for JSON modules

## VERSION

version 8.12

## DESCRIPTION

This role encodes Perl data structures into JSON strings, and decodes 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 array 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.

## AUTHOR

Enrico Zimuel \<enrico.zimuel@elastic.co\>

## COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Elasticsearch BV.

This is free software, licensed under:

```
  The Apache License, Version 2.0, January 2004
```
