Boneyard Tools

JSON vs YAML: when to convert and why

How JSON and YAML map to the same data, where each format shines, and what to watch for when you turn one into the other for config files.

The same data, two notations

JSON and YAML are two ways of writing the same underlying structures: mappings, sequences and scalar values. A JSON object with a name and a list of roles carries the exact information as the YAML that this tool produces from it. Because the models line up, a lossless round trip is possible: convert JSON to YAML here, edit it, then convert back with the YAML to JSON tool. The choice between them is about who reads and writes the file, not about what the data can express.

Where YAML earns its place

YAML shows up wherever humans edit configuration by hand. Docker Compose, Kubernetes manifests, GitHub Actions and Ansible playbooks all use it because indentation reads cleanly and comments explain intent. Converting a JSON snippet from an API or a script into YAML is a common first step when you seed one of those files. The 2-space indent and disabled line wrapping in this tool match the conventions those ecosystems expect.

Where JSON stays the better fit

For data moving between programs, JSON is usually the safer default. It is stricter, has one obvious way to write most values, and every language ships a parser for it. YAML's flexibility, such as several ways to quote strings, is a feature for humans but a source of surprises for machines. If a config file is generated and consumed only by code, keeping it as JSON avoids whitespace bugs entirely.

Gotchas when converting

A few YAML quirks are worth knowing before you paste output into a real file. Unquoted values like yes, no, on and off can be read as booleans by some parsers, and a bare version number such as 1.10 may lose its trailing zero if read as a float. This converter emits standard YAML from your JSON types, so a JSON string stays a string, but when you later hand-edit the file, quote anything that must remain literal text. Always validate the result against the tool that will consume it.

Frequently asked questions

Is converting JSON to YAML and back always lossless?

For the JSON data model it is: objects, arrays, strings, numbers, booleans and null survive a round trip. What does not survive is formatting like specific spacing or any comments you add to the YAML, since JSON cannot store them.

Why does my number look different after editing the YAML?

That happens when a value gets reinterpreted, for example a hand-typed 1.10 read as the float 1.1, or an octal-looking 010 read as 8. The converter itself preserves your JSON types; the risk appears when you edit the YAML by hand, so quote values that must stay literal.