Achatar/Desachatar JSON

Achate objetos JSON aninhados em chaves com notação de ponto (por exemplo, user.address.city) e desfaça-os. Separador configurável e manipulação de arrays.

Flattened Output

12 keys
{
  "user.id": 42,
  "user.name": "Alice",
  "user.roles.0": "admin",
  "user.roles.1": "editor",
  "user.address.city": "Berlin",
  "user.address.country": "Germany",
  "user.address.zip": "10115",
  "user.preferences.theme": "dark",
  "user.preferences.notifications.email": true,
  "user.preferences.notifications.sms": false,
  "meta.version": "1.0",
  "meta.created": "2024-01-15"
}

Como Usar Achatar/Desachatar JSON

  1. 1Cole um objeto JSON aninhado na entrada.
  2. 2Escolha Achatar para converter para chaves de notação ponto, ou Desachatar para converter de volta.
  3. 3Configure o caractere separador e copie o resultado.
ZenovayAnalytics

Veja quem está no seu site agora mesmo.

  • Acompanhamento de visitantes em tempo real
  • Privacidade em primeiro lugar, sem banner de cookies
  • Configurado em dois minutos
Conheça o Zenovay

Perguntas Frequentes

O que é JSON flattening e quando é útil?
JSON flattening converte objetos aninhados em um objeto de um único nível em que as chaves aninhadas são unidas com um separador (geralmente ponto). Exemplo: {"user": {"name": "Alice", "address": {"city": "Berlin"}}} → {"user.name": "Alice", "user.address.city": "Berlin"}. Casos de uso: flattening para armazenamento de colunas de banco de dados (migração NoSQL para SQL), simplificar respostas de API profundamente aninhadas, alimentar pipelines de aprendizado de máquina que esperam dados tabulares, indexação de documentos Elasticsearch, e enviar eventos de analytics com propriedades simples.
Como funciona o flattening de arrays?
Arrays são aplanados usando seu índice como parte da chave. Exemplo: {"tags": ["js", "ts"]} → {"tags.0": "js", "tags.1": "ts"} com separador de ponto, ou {"tags[0]": "js", "tags[1]": "ts"} com notação de colchetes. Arrays aninhados: {"matrix": [[1,2],[3,4]]} → {"matrix.0.0": 1, "matrix.0.1": 2, "matrix.1.0": 3, "matrix.1.1": 4}. Reconstruir arrays ao desaplanar requer saber quais chaves são índices numéricos. Algumas ferramentas preservam a estrutura do array durante o desaplanamento; outras convertem para objetos.
Quais separadores são comumente usados para chaves aplanadas?
Ponto (.): mais comum, intuitivo, conflita com chaves que contêm pontos. Sublinhado (_): evita conflitos com pontos, usado em algumas convenções de nomenclatura de colunas de banco de dados. Sublinhado duplo (__): evita conflitos com sublinhas simples, usado em variáveis de ambiente Django e valores do Helm chart. Barra (/): usada em JSON Pointer (RFC 6901) — "/user/address/city". Dois-pontos (:): usado em alguns sistemas de configuração. Melhor prática: escolha um separador que não apareça em seus nomes de chaves existentes. Evite pontos se as chaves podem conter nomes de pacotes ou nomes de domínio.
O que é JSON Pointer (RFC 6901)?
JSON Pointer é um padrão IETF (RFC 6901) para referenciar um valor específico dentro de um documento JSON. Formato: /key/subkey/index. Documento raiz: "". Primeiro elemento do array: "/0". Valor aninhado: "/user/address/city". Caracteres especiais: "~0" representa "~", "~1" representa "/". Usado em: JSON Patch (RFC 6902) para atualizações parciais, JSON Schema $ref, referências de caminho OpenAPI. Exemplo: PATCH com {"op": "replace", "path": "/user/address/city", "value": "London"} altera um valor aninhado sem substituir o documento inteiro.
Como faço para aplanar JSON em JavaScript sem uma biblioteca?
function flatten(obj, prefix = "", sep = ".") { return Object.entries(obj).reduce((acc, [key, val]) => { const newKey = prefix ? prefix + sep + key : key; if (val && typeof val === "object" && !Array.isArray(val)) { Object.assign(acc, flatten(val, newKey, sep)); } else if (Array.isArray(val)) { val.forEach((item, i) => { if (item && typeof item === "object") { Object.assign(acc, flatten(item, newKey + sep + i, sep)); } else { acc[newKey + sep + i] = item; } }); } else { acc[newKey] = val; } return acc; }, {}); }. Para o inverso (unflatten), divida cada chave no separador e reconstrua a estrutura aninhada.