AZ Tools

Achatar / Desachatar JSON (notação de pontos)

Desenvolvimento

Cole JSON e alterne entre dois modos. Achatar reduz um objeto ou array aninhado a um objeto plano cujas chaves são caminhos como `app.server.ports[0]` — útil para variáveis de ambiente, caminhos de atualização do MongoDB, arquivos de mensagens i18n, colunas CSV ou comparar duas configurações. Desachatar faz o inverso, expandindo chaves planas de notação de pontos de volta a uma estrutura aninhada. Escolha o delimitador (`.`, `/`, `_`, `-`) e se os arrays usam notação de colchetes (`items[0]`) ou índices com pontos (`items.0`). Objetos e arrays vazios são preservados como folhas, então um ciclo achatar → desachatar devolve exatamente o que você colocou. Tudo roda localmente — seu JSON nunca sai do navegador.

Arrays:

Saída · 9 chaves

{
  "app.name": "demo",
  "app.version": "1.2.0",
  "app.features[0]": "search",
  "app.features[1]": "export",
  "app.server.host": "localhost",
  "app.server.ports[0]": 8080,
  "app.server.ports[1]": 8081,
  "flags.beta": true,
  "flags.maxUsers": 100
}

Achatar e desachatar são inversos exatos a menos que uma chave de objeto contenha o delimitador — troque o delimitador se suas chaves têm pontos.

Como usar

  1. Escolha Achatar ou Desachatar.
  2. Cole seu JSON na caixa de entrada.
  3. Defina o delimitador e a notação de arrays conforme seu formato alvo e copie o resultado.

Perguntas frequentes

A conversão é reversível?
Sim, para dados normais. Achatar e depois desachatar com o mesmo delimitador e notação de arrays devolve um objeto idêntico — objetos/arrays vazios e valores null são mantidos como folhas, então nada se perde. A única exceção está abaixo.
E se uma chave de objeto contiver o delimitador?
Então o ciclo fica ambíguo: uma chave como `a.b` achatada com o delimitador `.` não se distingue de `a` → `b` aninhado, então desachatar vai dividi-la. Se suas chaves contêm pontos, escolha outro delimitador (ex.: `/`) que não apareça nelas.
Como os índices de array são tratados?
No modo colchetes os arrays viram `list[0]`, `list[1]`; no modo pontos viram `list.0`, `list.1`. Ao desachatar, qualquer índice entre colchetes ou um segmento puramente numérico é reconstruído como elemento de array, então uma chave plana `users.0.name` produz um array de objetos.
Ele modifica meus tipos de dados?
Não. Números, booleanos, null e strings são preservados exatamente como valores JSON; apenas a estrutura de chaves muda. A indentação de saída (0/2/4 espaços) só afeta a formatação, não o conteúdo.

Ferramentas relacionadas