Ordenar JSON

Ferramenta online gratuita para ordenar JSON. Com um clique, organize as chaves do objeto alfabeticamente ou ordene os elementos do array por valor. Alterne ascendente/descendente e recursão em estruturas aninhadas.

Sugestões Relacionadas

O que é Ordenar JSON (JSON Sort)?

Ordenar JSON (JSON Sort) é a reordenação de chaves dentro de um objeto JSON de acordo com alguma ordem (mais comumente alfabética), ou a reordenação de elementos em um array JSON de acordo com alguma regra (valor numérico, ordem lexicográfica). Não muda nenhum valor ou tipo de campo, apenas a ordem física - uma operação típica de canonicalização que alinha JSON de diferentes fontes, tempos e autores em uma única forma estrutural.

As 5 principais razões pelas quais a ordenação JSON é necessária na prática: ① **Reduzir ruído de Git Diff** - diferentes desenvolvedores constroem objetos JSON em ordens diferentes, gerando enormes diffs sem sentido no commit. Após unificar a ordem das chaves, o diff se concentra em mudanças reais. ② **Normalização de configuração** - pipelines CI/CD, centros de configuração e serviços de Feature Flag querem que as configs de todos os ambientes tenham uma ordem de chaves consistente para facilitar auditoria, rollback e diff entre ambientes. ③ **Comparação de dados** - pré-ordenar antes de usar uma ferramenta de JSON Diff elimina falsas diferenças causadas por ordens de chaves diferentes. ④ **Padronização de respostas API** - frontends que armazenam em cache ou fazem hash de respostas querem uma ordem de chaves estável, para evitar tratar os mesmos dados de negócio como chaves diferentes devido a ordenações diferentes. ⑤ **Legibilidade** - JSON escrito à mão é frequentemente construído campo a campo pela lógica de negócio; ordená-lo o torna visualmente mais organizado.

No nível de implementação, o núcleo da ordenação JSON é ordenar cada nível de chaves de objeto com `localeCompare`, e processar objetos aninhados recursivamente. A ferramenta Ordenar JSON da GeekFormat tem dois modos: ① **Ordenar por chave** (padrão) - apenas reordena as chaves do objeto alfabeticamente, preservando a ordem dos elementos do array. ② **Ordenar por elemento do array** - ordena os elementos do array por sua ordem lexicográfica de string serializada. Também suporta um alternador de recursão e um alternador ascendente/descendente. O processo inteiro acontece localmente no navegador; nada é carregado.

Casos de uso

  • Unifique a ordem das chaves em arquivos de configuração JSON da equipe, package.json, tsconfig.json, etc. para reduzir ruído de Git Diff
  • Ordene dois JSONs antes de comparar para eliminar falsas diferenças de ordens de chaves diferentes, deixando o diff focar em mudanças reais
  • Padronize a ordem das chaves de dados de resposta API para facilitar cache de front-end, armazenamento IndexedDB e cálculo de hash de objetos
  • Persista configs do centro de configuração CI/CD, serviço de Feature Flag em ordem de chaves canônica, para facilitar auditoria e rollback
  • Organize grandes arquivos de configuração JSON ou exportações de dados - ordenar chaves alfabeticamente os torna visualmente mais limpos
  • Unifique a ordem das chaves antes de escrever JSON em banco de dados / Redis / fila de mensagens, para garantir consumo idempotente a jusante

Como Usar

  1. Cole o conteúdo JSON a ser ordenado na caixa de entrada esquerda, ou clique em 'Exemplo' para carregar um JSON multi-nível típico, ou faça upload de um arquivo .json/.txt
  2. Selecione o modo de ordenação na barra de opções inferior: padrão 'Ordenar por chave'; mude para 'Ordenar por array' se precisar ordenar elementos de array
  3. Alterne o botão ascendente / descendente conforme necessário, marque ou desmarque 'Recursivo' (ativado por padrão)
  4. Clique no botão 'Ordenar'; a caixa de saída direita mostra o resultado ordenado formatado. Clique em 'Copiar' ou 'Baixar' para salvar como sorted.json

Recursos

  • Dois modos de ordenação: suporta 'Ordenar por chave de objeto' e 'Ordenar por elemento de array' como modos centrais, alternáveis com um clique
  • Processamento recursivo aninhado: recursão ativada por padrão, descendo em objetos aninhados de múltiplos níveis para ordenar chaves em cada nível, garantindo uma estrutura consistentemente organizada
  • Alternador Ascendente/Descendente: botão integrado ascendente (A-Z) / descendente (Z-A), flexível para hábitos de leitura e requisitos de negócio
  • Ordem de dicionário localeCompare: a comparação de chaves usa ordem de dicionário local, ordenando corretamente chinês, caracteres especiais e emoji
  • Preserva a estrutura de dados: ajusta apenas a ordem de nomes de chaves e elementos de array, não adiciona nem remove campos, não modifica tipos de valores
  • Experiência rápida com dados de amostra: dados demo integrados 'zoo + alpha/beta/omega', um clique para carregar e ver o efeito de ordenação
  • Processamento local para privacidade: análise, ordenação e formatação acontecem localmente no navegador, nenhuma entrada enviada a um servidor
  • Transição suave para ferramentas a jusante: os resultados ordenados podem ser copiados com um clique para o Formatador JSON, Comparação Diff, Validador Schema, etc.

Exemplos de Código

Ordenação de chaves de objeto em JavaScript com Object.keys + sort

javascript
// Ordenação recursiva de chaves, retorna um novo objeto (não modifica o original)
function sortKeysDeep(value) {
  if (Array.isArray(value)) return value.map(sortKeysDeep);
  if (value !== null && typeof value === 'object') {
    return Object.keys(value)
      .sort((a, b) => a.localeCompare(b))
      .reduce((acc, k) => {
        acc[k] = sortKeysDeep(value[k]);
        return acc;
      }, {});
  }
  return value;
}

const data = { zoo: { animals: ['zebra', 'elephant'] }, alpha: 1, beta: 2 };
const sorted = sortKeysDeep(data);
console.log(JSON.stringify(sorted, null, 2));
// => {
//      "alpha": 1,
//      "beta": 2,
//      "zoo": { "animals": ["zebra", "elephant"] }
//    }

Python sort_keys=True + ordenação de array

python
import json

data = {"zoo": {"animals": ["zebra", "elephant"]}, "alpha": 1, "beta": 2}

# Ordenação alfabética automática na serialização com sort_keys
sorted_json = json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False)
print(sorted_json)

# Ordenação de array por valor
arr = [3, 1, 4, 1, 5, 9, 2, 6]
print(sorted(arr))          # numérico ascendente
print(sorted(arr, reverse=True))  # descendente

# Ordem de dicionário de strings
print(sorted(['banana', 'Apple', 'cherry']))  # ['Apple', 'banana', 'cherry']

Ordenar por chave com jq

bash
# Ordenação recursiva de chaves + indentação de 2 espaços
jq -S '.' data.json

# Explicação: -S (--sort-keys) ordena todas as chaves do objeto recursivamente em ordem ASCII ascendente

# Ordenar array por ordem lexicográfica de string do elemento (objetos são comparados por sua string JSON)
jq 'sort' data.json

# Ordenar array por um campo (ex. por idade ascendente)
jq 'sort_by(.age)' data.json

# Descendente
jq 'sort_by(.age) | reverse' data.json

Perguntas frequentes

Qual é a diferença entre Ordenar JSON e Formatar JSON?

Formatar JSON ajusta apenas indentação, quebras de linha e caracteres de espaço, sem alterar a ordem das chaves. Ordenar JSON reordena a ordem física dos nomes das chaves (alfabeticamente) ou elementos do array (por tamanho do valor). Os dois são frequentemente usados juntos: ordene primeiro para deixar a estrutura organizada, depois formate para tornar o conteúdo legível - a saída final é o JSON mais limpo.

O JSON ordenado ficará maior?

A contagem de bytes é essencialmente a mesma. A ordenação não adiciona nem remove campos, apenas reordena os nomes das chaves, então a contagem de caracteres serializados é quase a mesma do original (os caracteres de indentação podem diferir em 1-2 bytes).

Altera os valores ou tipos dos campos?

Não. Esta ferramenta é uma reordenação puramente estrutural: as chaves do objeto são reordenadas, os elementos do array são reposicionados, valores e tipos permanecem intocados. As semânticas relativas de `null`, booleanos, números, strings, objetos e arrays são todas preservadas.

Posso ordenar chaves do objeto por valor?

Esta ferramenta atualmente suporta dois modos: ① Ordenar por nome de chave de objeto alfabético (a ordem das chaves do objeto muda); ② Ordenar elementos de array por valor (elementos dentro de um array mudam de posição). Se você precisa ordenar elementos de array por algum valor de campo de objeto, primeiro use a ferramenta JSON Path para extrair esse campo em um array de nível superior, depois use o modo de array para ordenar.

O que significa ordenação recursiva? Devo desativá-la?

Recursiva = ordenar nomes de chaves em cada nível de objetos aninhados. Não recursiva = apenas ordenar as chaves do objeto de nível superior; sub-objetos mantêm sua ordem original. Na maioria dos cenários recomendamos manter a recursão ativada para uma estrutura consistentemente organizada. Apenas quando seus objetos internos têm semântica de ordem específica (ex. uma 'lista de prioridades' na config) você desativaria a recursão.

Por que minhas chaves inteiras são ordenadas para o início?

Este é o comportamento da spec do JavaScript: quando as chaves de um objeto parecem inteiros não negativos (0, 1, 2...), o motor itera elas em ordem numérica ascendente - chaves inteiras aparecem antes de chaves de string. A ordenação desta ferramenta preserva esse comportamento. Se você quer que 'chaves parecidas com inteiros também sejam ordenadas em ordem de string', use Reparar JSON ou um editor para mudá-las para chaves de string com aspas como "0", "1".

Nomes de chaves chineses podem ser ordenados por Pinyin?

Sim. Por baixo dos panos esta ferramenta usa localeCompare do JavaScript, que ordena de acordo com a locale atual do navegador por padrão. Em um ambiente chinês basicamente ordena por Pinyin ascendente, mas o comportamento exato varia com navegador e SO. Para ordenação Pinyin estrita, use uma biblioteca Node.js que suporte regras de collation ICU (ex. `natural-orderby`).

Como ordenar objetos dentro de um array?

O modo de array suporta ordenar os objetos dentro de um array pela 'ordem lexicográfica da string serializada' - isso significa que os objetos são ordenados pelo valor de string do primeiro campo que difere. Para ordenar por um campo específico (ex. price, date), use uma operação sort-by na ferramenta JSON Path, ou no código use `Array.prototype.sort((a, b) => a.price - b.price)`.

Posso desfazer e restaurar a ordem original após ordenar?

Esta ferramenta não mantém um histórico da ordem original (por simplicidade). Recomendações: ① Copie o original para a área de transferência antes de modificar; ② Salve o original como arquivo .json para rollback; ③ Use git para gerenciar originais em produção - `git checkout` qualquer versão histórica quando necessário.

O resultado ordenado pode ser exportado e salvo?

Sim. Clique em 'Baixar' para salvar como sorted.json; ou clique em 'Copiar' para colocar o resultado na área de transferência e colar em código ou documentos. O arquivo baixado é JSON padrão, consumível por qualquer editor, IDE ou ferramenta CI.

A ferramenta carrega meu JSON em um servidor?

Não. Análise, ordenação e formatação acontecem localmente no navegador; entrada e resultados intermediários não são enviados a nenhum servidor. Funciona offline, adequado para processar JSON sensíveis (ex. configs internos, respostas API não publicadas).

Qual é a melhor ordem de uso com JSON Diff e Validação Schema?

Cadeia recomendada: ① Reparar JSON (limpar JSON ilegal) → ② Ordenar JSON (unificar ordem das chaves) → ③ JSON Diff (comparar baseado no resultado ordenado, ruído de diff mínimo) → ④ Formatar JSON (unificar indentação para legibilidade) → ⑤ Validação JSON Schema (restrições de campos de negócio). Escolha os passos que precisar.

Solução de Problemas

A ordenação mostra erro 'Invalid JSON'

Causa: a entrada não é JSON válido. Solução: primeiro cole o JSON na ferramenta Reparar JSON para limpar (trata automaticamente vírgulas finais, aspas simples, chaves sem aspas, etc.), depois volte para esta ferramenta; ou verifique se faltaram chaves/colchetes externos.

Chaves inteiras são ordenadas para o início

Causa: a spec do JavaScript itera chaves 'parecidas com inteiros não negativos' em ordem numérica ascendente. Solução: mude as chaves inteiras para chaves de string ("0", "1") antes de ordenar; ou aceite este comportamento como uma funcionalidade.

Os objetos do array não foram ordenados pelo campo esperado

Causa: o modo de array ordena pela ordem lexicográfica da string serializada, com o primeiro campo que difere decidindo a ordem final. Solução: use sort-by na ferramenta JSON Path; ou no código use `arr.sort((a, b) => a.field - b.field)` para personalizar o comparador; esta ferramenta tem como alvo principal cenários de ordenação por nome de chave.

Nomes de chaves chineses não são ordenados como esperado

Causa: o comportamento de localeCompare varia ligeiramente entre navegadores/SO, e para chinês usa por padrão os pontos de código Unicode ou a locale do navegador. Solução: especifique explicitamente a locale no código (ex. `localeCompare('pt-BR')`); ou mude para uma biblioteca que suporte regras de collation ICU para ordenação Pinyin estrita.

Objetos aninhados internos não foram ordenados (apenas o nível externo)

Causa: 'Recursivo' na barra de opções inferior não está marcado. Solução: marque o alternador 'Recursivo' (marcado por padrão), reative a ordenação; as chaves dos objetos internos também serão ordenadas alfabeticamente.

Arquivos grandes (10 MB+) fazem a ordenação congelar

Causa: analisar um texto grande com JSON.parse de uma vez ocupa muita memória. Solução: mantenha a entrada dentro de 1-2 MB; para arquivos enormes use scripts Node.js (`Object.keys(...).sort()`) ou Python (`json.dumps(..., sort_keys=True)`) localmente; use esta ferramenta para verificação pequena depois.

Glossário

JSON Sort
Reordenação de chaves de objeto JSON alfabeticamente ou elementos de array por valor; não muda nenhum valor ou tipo de campo, apenas a ordem física.
localeCompare
Função de comparação lexicográfica de string embutida em JavaScript que retorna -1/0/1. Esta ferramenta usa localeCompare para ordenar chaves, tratando corretamente chinês, caracteres especiais e emoji.
ASCII Ascendente / Descendente
Ordenar por pontos de código Unicode dos caracteres (tabela ASCII); letras maiúsculas A-Z antes de minúsculas a-z, dígitos 0-9 antes de letras.
Ordenação locale-aware
Ordenação que respeita convenções de idioma; para chinês usa por padrão os pontos de código Unicode ou a locale do navegador, o que difere da ordenação Pinyin estrita.
Chave tipo inteiro (Integer-like Key)
Uma chave de objeto que parece um inteiro não negativo (ex. "0", "1", "2"); os motores JavaScript iteram elas automaticamente em ordem numérica ascendente. Comportamento de spec, não pode ser desativado.
Ordenação Recursiva
Ordenar nomes de chaves em cada nível de objetos aninhados. Esta ferramenta habilita por padrão; desativar ordena apenas o nível superior.
Forma Canônica
Forma normalizada; Ordenar JSON é uma maneira de construir uma forma canônica, facilitando diff, hash de cache e consistência entre ambientes.
Ruído de Git Diff
Linhas de diff em revisão de código produzidas por diferenças de formato (não mudanças lógicas reais); commits com JSON com chaves em ordem diferente geram grandes quantidades de diff de ruído.
pre-commit Hook
Script que executa automaticamente antes de um commit Git; muitas equipes invocam `jq -S .` em pre-commit para ordenar as chaves do arquivo JSON antes do add, garantindo ordem JSON consistente no repositório.
Ferramenta JSON Diff
Uma ferramenta (ex. jsondiffpatch) que compara dois JSONs para encontrar diferenças; recomendado ordenar ambos os lados primeiro, para eliminar diff falso por ordem de chaves.

Cenários de Ordenação JSON e Métodos de Referência

CenárioOrdenar porImplementação recomendadaFerramenta correspondente
Reduzir ruído de Git DiffChave de objeto alfabéticajq -SEsta ferramenta / jq
Normalização de centro de configChave de objeto alfabéticajq -SEsta ferramenta / jq
Chave de cache de resposta APIChave de objeto alfabéticaJSON.stringify(sort_keys=True)Esta ferramenta / Python json
Mesclagem de array de API paginadaSem ordenaçãoconcatFerramenta Mesclar JSON
Ordenar array por data de criaçãoElemento .created_atjq 'sort_by(.created_at)'jq sort_by
Ordenar produtos por preçoElemento .pricelodash _.sortByJS sort((a,b)=>a.price-b.price)

Ordenar JSON vs JSON Diff vs Mesclar JSON

FerramentaO que resolveDimensão de ordenaçãoGeralmente emparelhado com
Ordenar JSON (esta ferramenta)Unificar ordem de chaves/arrayChaves / elementos de arrayJSON Diff, Mesclar JSON
JSON DiffComparar dois JSONs por diferençasNenhuma (baseado em conteúdo)Ordenar (ordene primeiro, depois diff)
Mesclar JSONMesclagem multi-fonteOrdenável por configOrdenar (normalizar pós-mesclagem)
Reparar JSONConverter JSON ilegal em válidoNenhumaOrdenar (arquivar pós-reparo)
Validação JSON SchemaValidação de restrições de campoNenhumaPode validar a saída ordenada

Authoritative References