---
name: "JSON::Dumper::Compact"
section: "3pm"
platform: "linux"
package: "libdata-dumper-compact-perl"
version: "0.006000-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/JSON::Dumper::Compact"
---

# JSON::Dumper::Compact(3pm)

JSON processing with Data::Dumper::Compact aesthetics

## NAME

JSON::Dumper::Compact - JSON processing with Data::Dumper::Compact aesthetics

## SYNOPSIS

```
  use JSON::Dumper::Compact 'jdc';

  my $json = jdc($data);
```

## DESCRIPTION

JSON::Dumper::Compact is a subclass of Data::Dumper::Compact that turns arrayrefs and hashrefs instead into JSON.

Deep data structures are rendered highly compactly:

```
  [
    "1556933590.65383", "Fri May  3 18:33:10 2019", 26794, "INFO", 3,
    [ "SRV:8FB66F32" ], [ [
        "/opt/voice-srvc-native/bin/async-srvc-att-gateway-poller", 33,
        "NERV::Voice::SRV::Native::AsyncSRVATTGatewayPoller::main",
    ] ],
    "batch_nena_messages returned", "OK", 6, { "FILENAME": "lqxw020323" },
    1556933584, "lqxw020323",
  ]
```

To ease debugging, blessed references without a `"TO_JSON"` method are rendered as an object with a single two-element arrayref value:

```
  { "__bless__": [
    "The::Class",
    { "the": "object" },
  ] }
```

## METHODS

In addition to the Data::Dumper::Compact methods, we provide:

### encode

```
  JSON::Dumper::Compact->encode($data, \%opts?);
  $jdc->encode($data, \%opts?);
```

Operates identically to "dump" in Data::Dumper::Compact but named to be less confusing to code expecting a JSON object.

### decode

```
  JSON::Dumper::Compact->decode($string, \%opts?);
  $jdc->decode($string, \%opts);
```

Runs the supplied string through an JSON::MaybeXS `"decode"` with options set to be able to reliably reparse what we can currently format - notably setting `"relaxed"` to allow for trailing commas and using `"filter_json_single_key_object"` to re-inflate blessed objects.

Note that using this method on untrusted data is a security risk. While `"encode"`/`"dump"` should be usable for JSON formatting, in general, `"decode"` fully rehydrates for debugging purposes and as such can e.g. cause DESTROY methods to be called unexpectedly, which can allow a malicious user to do things to your perl5 VM. Rather than using debugging specific code on untrusted data, use JSON::MaybeXS or Mojo::JSON directly (if the `"encode"` output doesn't parse correctly via other libraries, please report that as a bug)..

DO NOT USE THIS METHOD ON UNTRUSTED DATA IT WAS NOT DESIGNED TO BE SECURE.

## COPYRIGHT

Copyright (c) 2019 the "AUTHOR" in Data::Dumper::Compact and "CONTRIBUTORS" in Data::Dumper::Compact as listed in Data::Dumper::Compact.

## LICENSE

This library is free software and may be distributed under the same terms as perl itself. See \<https://dev.perl.org/licenses/\>.
