JSON
JSON Path Extractor / Flatten
Achatar (Flatten) um JSON aninhado em uma lista plana de "caminho: valor" e remontá-lo em uma estrutura aninhada (Unflatten). A notação de caminho é a mesma usada em JSONPath/JSON Diff: store.book[0].price.
Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.
How to use it
- Flatten: paste nested JSON and get a flat list of every leaf value with its full path.
- Unflatten: paste a list of "path: value" pairs to rebuild a nested JSON structure from it.
- The path notation matches this site's JSONPath and JSON Diff tools — items[0].name for array elements.
Common uses
- Turning a deeply nested API response into a flat list for import into a spreadsheet or analytics system.
- Building a translation dictionary or config back into nested JSON from flat keys (form.errors.email).
- Quickly finding every value on a given topic in a very large JSON document via a flat path list.
Things to keep in mind
Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.
Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.
Artigo sobre esta ferramenta: JSON Flatten: transformar uma estrutura aninhada em uma lista plana
Perguntas frequentes
O que "achatar" (flatten) um objeto JSON realmente faz?
Converte objetos e arrays aninhados em um objeto de nível único com chaves em notação de ponto ou colchete (como user.address.city ou items[0].id), tornando dados profundamente aninhados mais fáceis de ler como uma tabela plana ou importar em ferramentas de planilha.
Um JSON achatado pode ser convertido de volta à sua forma aninhada original?
Sim, desde que a notação de chaves seja consistente — reverter o processo reconstrói a estrutura aninhada original dividindo cada caminho de chave de volta em objetos e arrays.
Achatar perde alguma informação do JSON original?
Não. Todo valor é preservado; apenas a estrutura muda, já que cada caminho aninhado único se torna sua própria chave plana.
O que acontece se uma chave real contiver um ponto?
Essa é uma situação ambígua: o caminho user.name pode significar tanto um objeto aninhado {"user": {"name": ...}} quanto uma chave plana {"user.name": ...}. A notação de pontos não faz essa distinção, por isso essas chaves devem ser evitadas ou tratadas separadamente.
O formato dos caminhos é o mesmo em todas as ferramentas semelhantes?
Não. A notação de ponto para objetos (user.name) é praticamente universal, mas a notação de índices de array varia: aqui é usado items[0], enquanto algumas bibliotecas escrevem items.0 sem colchetes.