JSON Deserialize

Take a payload that was serialized for a log line, a database column or a queue message and read it as an object again.

Serialized payload
Deserialized JSON
Runs locally in your browser

About the JSON Deserialize

Serialized JSON arrives in more shapes than a plain document. A log aggregator stores it as one quoted string with every inner quote escaped, a message broker hands it over as Base64, and a redirect carries it as a percent encoded query value. This deserializer inspects the payload, peels whichever wrapper it finds, repeats up to six times while the result still looks wrapped, and only then parses the JSON underneath.

Leave the selector on Detect automatically for pasted material of unknown origin. Pick an explicit source when the guess would be ambiguous, for example a short Base64 blob that also happens to look like an identifier. The status line names each wrapper that was removed, so you can see whether the value went through one encoding step or three before it reached you.

Some services double serialize: a field holds a string whose contents are themselves a JSON document. Switch on Parse JSON hidden inside string values and every such field is expanded in place, which turns a wall of backslashes into a real nested structure. Sorting keys makes two captured payloads comparable when only the ordering differs.

When the wrapper is the only thing you want to remove, the JSON Unstringify tool does that single step. To rebuild a payload for transport again, use JSON Serialize.

How to use

  1. Paste the serialized payload into the left pane, or press Sample for an escaped string literal.
  2. Leave Payload is on automatic detection, or name the encoding when you already know it.
  3. Tick Parse JSON hidden inside string values if fields still hold escaped documents of their own.
  4. Read the status line to confirm which wrappers were removed, then copy or download the result.

Common questions

What is the difference between deserializing and simply parsing?
Parsing expects a valid JSON document already. Deserializing first removes whatever transport wrapper the payload carries, such as quoting, Base64 or percent escapes, and parses what is left.
How many layers can it unwrap?
Up to six in automatic mode. That covers the usual double and triple encoded cases without looping forever on odd input.
Why did my Base64 payload stay untouched?
Automatic detection only accepts Base64 when the decoded text starts with a brace, a bracket or a quote. Choose Base64 in the selector to force it.
Does the tool change my numbers?
Values are parsed with the standard JSON rules, so very large integers beyond the safe range lose precision exactly as they would in any JavaScript runtime.