What is JSON flattening and dot notation?
Flattening rewrites a nested JSON document as a single flat object whose keys are the full path to each leaf value. Instead of walking through nested braces, you get one entry per scalar: a string key like user.address.city and the value that lives at that path. The depth that was expressed by nesting moves into the key names, so the document loses its levels but keeps every value.
The path syntax is called dot notation: each level of an object is joined to the next with a dot, so { "a": { "b": 1 } } becomes { "a.b": 1 }. It is the same convention many libraries already use to reach into nested data — Lodash's _.get(obj, 'a.b.c'), MongoDB's dotted field queries, and countless config systems all address nested values by path. Flattening simply materializes every one of those paths at once.
The transform is deterministic — the same input always produces the same output — and JSON Copilot runs it as plain code on its own server, so no AI model is involved and your JSON never reaches an LLM. It is lossless for values and, for plain object and array data, largely lossless for structure too: given the flat keys you can usually reconstruct the original nesting. The caveats to that round trip are covered below.