IA no seu dispositivo — profissional e privado.

Mesclador de objetos JSON

Mescle JSON com estratégias profunda, de arrays e por chave

  • Até 5 documentos
  • 4 estratégias de arrays
  • Relatório de conflitos

Solte arquivos JSON aqui

JSON, JSONC, NDJSON e JSON Lines · até 5 arquivos · no seu dispositivo, não nos nossos servidores

0 de 5 documentos
Mesclagem
Objetos
Objetos

Profunda combina objetos aninhados chave a chave. Superficial os substitui por inteiro.

Arrays
Arrays

O que acontece quando dois arrays se encontram no mesmo caminho.

Valores null
Valores null

JSON não tem undefined, então um null pode ser um valor ou querer dizer «desfazer».

Saída
Ordem das chaves
Ordem das chaves

Original mantém a ordem base. A-Z dá um diff estável.

Indentação
Indentação
Formato
Formato

NDJSON precisa de um resultado do tipo array; esta mesclagem produziu um objeto.

Entrada

Arquivos de configuração costumam trazer comentários que um analisador rigoroso rejeita.

Entrega
Lote
Pro

Cada documento escrito separadamente com estes ajustes, num único arquivo compactado.

Grátis: 5 documentos, 10 MB cada, 30 MB no total.

Como mesclar arquivos JSON

  1. 1Adicione seus documentosSolte até cinco arquivos .json, .jsonc, .jsonl ou .ndjson, ou clique em Colar JSON para digitar um documento. A ordem importa — documentos posteriores vencem quando há divergência — e as setas de cada linha a alteram.
  2. 2Escolha como os objetos se combinamA mesclagem profunda combina objetos aninhados recursivamente. A superficial combina apenas chaves de primeiro nível e substitui objetos aninhados por inteiro. Ajuste a política de nulos se um null explícito não deve apagar um valor existente.
  3. 3Escolha como os arrays se combinamSubstituir mantém o último array, Concatenar os une, União os une e remove duplicados, e Mesclar por chave combina registros que compartilham uma chave como id.
  4. 4Mescle e revisePressione Mesclar. O relatório de conflitos lista cada caminho onde um documento posterior sobrescreveu um valor anterior, com ambos os valores, e o relatório de entradas mostra chaves duplicadas e avisos de precisão de cada origem.
  5. 5Baixe ou copieEscolha uma indentação, ou NDJSON quando o resultado for um array, e baixe ou copie. Se alterar qualquer ajuste depois, o resultado é marcado como desatualizado até que você o aplique de novo.

O que esta ferramenta de mesclagem JSON oferece

Mescle até cinco documentos JSON em um só. Eles se combinam na ordem em que você os coloca, então os posteriores vencem quando há divergência, e as setas de cada linha alteram essa ordem. Qualquer raiz JSON funciona — objetos, arrays e valores simples igualmente. Objetos aninhados podem se mesclar recursivamente ou ser substituídos por inteiro, arrays têm quatro estratégias próprias, e cada valor sobrescrito fica registrado, de modo que o resultado é algo que você pode conferir em vez de apenas confiar.

  • Quantos documentos quiser, em qualquer ordem — Solte arquivos, cole texto, ou ambos. Reordene as linhas para mudar qual documento vence. Cinco documentos no plano gratuito, e a ordem é a única garantia de prioridade da ferramenta.
  • Profunda ou superficial, e quatro estratégias de arrays — Objetos se mesclam recursivamente ou apenas no primeiro nível. Arrays são substituídos, concatenados, formam uma união sem duplicados, ou se mesclam registro a registro por um campo chave.
  • Um relatório de conflitos, não apenas um resultado — Cada caminho onde um documento posterior substituiu um valor anterior, com os dois valores e o documento vencedor. Nenhuma outra ferramenta de mesclagem JSON online publica um.
  • Ela lê o JSON que você realmente tem — Comentários e vírgulas finais, NDJSON, UTF-16, marcas de ordem de bytes. Cada um é um arquivo que um analisador rigoroso chama de quebrado e que todo editor mostra como correto.

Impulsionado por algoritmos de processamento otimizados.

Mesclagem superficial e mesclagem profunda

Esta é a decisão que mais muda o resultado, e as duas respostas são realmente diferentes, não uma melhor que a outra.

A mesclagem superficial combina apenas o primeiro nível. Se uma chave existe nos dois documentos, o valor posterior substitui completamente o anterior — e «completamente» inclui objetos aninhados: um objeto base com dez chaves aninhadas desaparece assim que um documento posterior menciona aquela chave. A mesclagem profunda, em vez disso, desce pelos objetos aninhados e os combina chave a chave, de modo que uma sobreposição só toca as chaves que ela realmente nomeia.

Mesclar {"server": {"host": "localhost", "port": 8080}} com {"server": {"port": 9090}} dá {"server": {"port": 9090}} na mesclagem superficial — o host sumiu — e {"server": {"host": "localhost", "port": 9090}} na profunda. Profunda é o padrão aqui porque sobrepor configuração é o motivo pelo qual se procura uma ferramenta destas, e é o que fazem o lodash.merge e todas as bibliotecas comparáveis.

Como os arrays são combinados

A mesclagem profunda nada diz sobre arrays: dois arrays não são dois objetos, e não existe uma única forma correta de combiná-los. A maioria das bibliotecas escolhe um comportamento em silêncio e nunca o menciona. Esta ferramenta pergunta.

  • Substituir — O array posterior vence. É o que a mesclagem profunda faz por convenção e o que a maioria das bibliotecas faz sem avisar. É o padrão aqui.
  • Concatenar — Todos os itens dos dois arrays, em ordem, duplicados incluídos. Adequado para logs, fluxos de eventos e tudo em que cada entrada é um registro próprio.
  • União — Os dois arrays unidos e depois sem duplicados, comparando a estrutura em vez da identidade: {"a":1,"b":2} e {"b":2,"a":1} contam como o mesmo item.
  • Mesclar por chave — Trata os dois arrays como conjuntos de registros e combina os que compartilham um campo chave. Detalhado adiante.

A estratégia de arrays vale onde quer que dois arrays se encontrem, tanto no modo superficial quanto no profundo. Deixá-la inerte no modo superficial manteria na tela um controle que, silenciosamente, não faz nada.

Mesclar registros por chave

Mesclar por chave é a estratégia que transforma dois arrays de registros em um. Informe o campo chave — id por padrão — e os registros correspondentes se combinam campo a campo em vez de um array substituir o outro.

  • Registros correspondentes se mesclam — Um registro de um documento posterior cuja chave coincide com a de um anterior é mesclado nele usando as mesmas regras de objetos de todo o resto, de modo que seus campos são acrescentados em vez de substituir o registro inteiro.
  • Registros novos são acrescentados — Um registro cuja chave ainda não existe é acrescentado ao final, mantendo intacta a ordem do documento anterior.
  • Registros sem a chave ficam intactos — Itens que não são objetos, ou objetos que não trazem o campo chave, são acrescentados sem alteração em vez de adivinhados.
  • O tipo faz parte da chave — O número 1 e o texto "1" são registros distintos e não se juntam. Tratá-los como iguais é o erro clássico de junções, e produz um resultado que parece perfeitamente razoável e está errado.

O que acontece com null

JSON não tem undefined, então null carrega dois sentidos ao mesmo tempo: é um valor real, e é a única forma de uma camada de configuração dizer «desfaça o que estava aqui». As duas leituras são legítimas e nenhuma biblioteca pode saber qual você queria. Por padrão um null posterior sobrescreve, porque null é um valor. Mude a política de nulos para Ignorar e um null de um documento posterior é inteiramente pulado, de modo que nunca poderá apagar algo definido por um documento base. O relatório conta quantos nulos foram ignorados, então escolher errado fica visível em vez de passar despercebido.

A ordem das chaves é por que ela importa nos diffs

Objetos JSON não têm ordem de chaves formalmente definida, mas na prática todos os analisadores e serializadores preservam a ordem em que as chaves foram escritas — o que significa que essa ordem aparece no diff do seu controle de versão. Por padrão o resultado mantém a ordem do documento base e acrescenta ao final as chaves novas dos documentos posteriores, de modo que uma mesclagem produz o menor diff possível. Ordene de A a Z quando quiser uma saída estável independentemente de como as entradas foram escritas, que é o que convém a um arquivo regenerado por várias ferramentas.

O relatório de conflitos

Uma ferramenta que só entrega o arquivo mesclado está pedindo que você acredite na palavra dela. Esta registra cada lugar em que um valor se perdeu.

Um conflito é qualquer caminho onde um documento posterior substituiu um valor anterior em vez de se mesclar a ele: um valor simples sobre um valor simples, um array sobre um array, ou um objeto sobre um objeto na mesclagem superficial. O relatório traz o caminho, o valor substituído, o valor que o substituiu e qual documento venceu. Valores que foram mesclados em vez de substituídos não são conflitos, e um documento posterior que escreve o valor idêntico também não — ambos seriam ruído. Ao lado dele, o relatório de entradas lista o que foi encontrado em cada documento de origem antes de a mesclagem começar.

Chaves duplicadas e precisão numérica

Duas coisas que todo analisador JSON descarta em silêncio, e ambas mudam o que o seu arquivo mesclado contém.

  • Chaves duplicadas — {"a": 1, "a": 2} é JSON válido e todo analisador mantém a última, descartando o fato de que havia duas. Se a duplicata foi um engano, a mesclagem que você audita não é a que você escreveu. Cada documento de origem informa quantas chaves duplicadas continha e onde.
  • Números que não sobrevivem a ida e volta — Números de JavaScript são doubles IEEE-754 e carregam de 15 a 17 dígitos significativos. Um id de banco de dados de 64 bits como 9007199254740993 vira 9007199254740992 em todo analisador JSON de todo navegador, então o arquivo mesclado contém um id diferente do de entrada. Não há correção dentro do modelo de dados do JSON, então a ferramenta avisa em vez de fingir o contrário.

Comentários, vírgulas finais, NDJSON e marcas de ordem de bytes

JSON rigoroso e o JSON que as pessoas realmente têm em disco não são a mesma coisa. Quatro diferenças explicam quase todo arquivo que «é válido em todo lugar menos no meu programa».

  • Comentários — tsconfig.json, .eslintrc.json e todo devcontainer.json trazem comentários // e /* */. O JSON.parse os rejeita. Aqui são reconhecidos, contados e mesclados.
  • Vírgulas finais — A outra metade da configuração editada à mão. Também rejeitada pelo JSON.parse, também tratada aqui.
  • NDJSON e JSON Lines — Um documento por linha, que é como chegam exportações de logs e resultados de API em fluxo. Detectado automaticamente e lido como array, e disponível como formato de saída quando o resultado é um array.
  • Marcas de ordem de bytes — O PowerShell escreve UTF-16 com marca por padrão e o .NET escreve UTF-8 com uma. Decodificado como UTF-8 simples, um arquivo UTF-16 vira algo sem sentido e todo analisador culpa o primeiro caractere. A marca é lida primeiro e decide a codificação.

Por que mesclar JSON?

Quase toda mesclagem de JSON é uma de poucas tarefas, e saber qual delas você está fazendo geralmente já define os ajustes.

  • Sobrepor configuração — Uma configuração base, depois sobreposições de ambiente, depois locais. Mesclagem profunda, ordem original das chaves, e Ignorar nulos se seus arquivos de sobreposição usam null como comentário.
  • Combinar respostas de API — Várias respostas em um objeto. Mesclagem profunda, e Mesclar por chave se as respostas trazem arrays de registros que devem se alinhar por um id.
  • Juntar conjuntos de registros — Duas exportações das mesmas entidades com campos diferentes. Mesclar por chave sobre o identificador comum as transforma num conjunto completo.
  • Consolidar traduções — Arquivos de idioma divididos entre equipes ou funcionalidades. Mesclagem profunda com ordem A-Z dá um arquivo estável que compara de forma limpa a cada regeneração.
  • Montar dados de teste — Um conjunto padrão mais sobreposições por caso, para que cada teste declare apenas o que o torna diferente.

Opções em resumo

  • Modo de mesclagem — Profunda combina objetos aninhados recursivamente. Superficial combina apenas chaves de primeiro nível e substitui objetos aninhados por inteiro.
  • Arrays — Substituir, Concatenar, União (sem duplicados) ou Mesclar por chave.
  • Campo chave — Qual campo identifica um registro em Mesclar por chave. Padrão id. Comparado por tipo além de por valor.
  • Nulos — Sobrescrever, para que um null explícito substitua um valor, ou Ignorar, para que nunca apague nenhum.
  • Ordem das chaves — Original mantém a ordem do documento base e acrescenta as chaves novas ao final. A-Z ordena cada objeto para um diff estável.
  • Indentação — Minificado, 2 espaços, 4 espaços ou tabulação.
  • Saída — JSON, ou NDJSON quando o resultado mesclado é um array.
  • Aceitar comentários e vírgulas finais — Ativado por padrão. Desative para exigir JSON rigoroso de todos os documentos.
  • Reiniciar — Limpa todos os documentos, o resultado e todos os ajustes, voltando aos padrões.

Limites e planos

O plano gratuito aceita cinco documentos, até 10 MB cada e 30 MB no total. O total costuma ser o número que pesa, porque uma mesclagem mantém todas as entradas e o resultado na memória ao mesmo tempo. Todos os controles que decidem se a mesclagem está correta são gratuitos: os dois modos, as quatro estratégias de arrays, o campo chave, a política de nulos, a ordem das chaves, as quatro indentações, os dois formatos de saída e os dois relatórios. O Pro amplia apenas a escala: mais documentos, o limite do seu próprio dispositivo em vez de um teto fixo, e um lote entregue como um único arquivo compactado.

Perguntas frequentes

Como funciona a ferramenta de mesclagem JSON?

Adicione até cinco documentos JSON soltando arquivos ou colando texto, escolha se os objetos se mesclam em profundidade ou apenas no primeiro nível e como os arrays se combinam, e pressione Mesclar. Os documentos são combinados na ordem da lista, então os posteriores vencem quando há divergência, e você pode copiar ou baixar o resultado ou conferir exatamente o que foi sobrescrito.

Meus dados estão seguros?

Sim. Cada documento é lido, mesclado e escrito no seu próprio dispositivo, e nada é enviado, armazenado ou registrado. Depois que a página carrega, a ferramenta continua funcionando offline, o que a torna segura para arquivos de configuração, credenciais e dados sigilosos.

Qual é a diferença entre mesclagem superficial e profunda?

A mesclagem superficial combina apenas chaves de primeiro nível: quando uma chave existe nos dois documentos, o valor posterior substitui inteiramente o anterior, incluindo objetos aninhados. A mesclagem profunda desce pelos objetos aninhados e os combina chave a chave, permitindo sobrepor ajustes a uma configuração base sem perder chaves aninhadas não relacionadas.

Posso mesclar arrays JSON, e não apenas objetos?

Sim. Qualquer raiz JSON funciona — objetos, arrays, textos, números, booleanos e null — e quatro estratégias decidem o que acontece quando dois arrays se encontram. Substituir mantém o array posterior, Concatenar os une em sequência, União os une removendo duplicados independentemente da ordem das chaves, e Mesclar por chave combina registros que compartilham um campo como id.

Como mesclo arrays de registros por um id?

Escolha Mesclar por chave e informe o campo chave, que por padrão é id. Registros do documento posterior cuja chave coincide com a de um anterior são mesclados campo a campo, registros com chave nova são acrescentados ao final, e registros sem a chave são acrescentados intactos. As chaves são comparadas também por tipo, então o número 1 e o texto "1" continuam sendo registros distintos.

Como são tratados os conflitos de chaves e a ordem de sobrescrita?

Os documentos se mesclam na ordem exibida, então um documento posterior sempre vence um conflito, e as setas de cada linha alteram essa ordem. Cada sobrescrita é registrada: o relatório de conflitos traz o caminho, o valor substituído, o valor que o substituiu e qual documento venceu, de modo que uma mesclagem é algo que você pode auditar em vez de apenas aceitar.

O que acontece com valores null?

Por padrão um null explícito num documento posterior sobrescreve o que veio antes, porque null é um valor JSON real. JSON não tem undefined, então null também é a única forma de uma camada de configuração dizer «desfaça isto» — se não é o que você quer, mude a política de nulos para Ignorar e um null nunca apagará um valor já existente.

Ele lê arquivos com comentários ou vírgulas finais?

Sim. Arquivos de configuração como tsconfig.json e .eslintrc.json costumam trazer comentários de linha e de bloco e vírgulas finais, que o JSON.parse rejeita de imediato. A ferramenta os reconhece, informa quantos encontrou e mescla o arquivo mesmo assim. Também lê NDJSON e JSON Lines como um array e remove as marcas de ordem de bytes que editores do Windows adicionam.

Quais são os requisitos de entrada e o que acontece se o JSON for inválido?

Qualquer documento JSON válido é aceito, em qualquer codificação com marca de ordem de bytes, até 10 MB por arquivo e 30 MB no total no plano gratuito. Se um documento não puder ser analisado, a linha mostra a linha, a coluna e a linha problemática com um cursor sob o problema, além de links para o Formatador e o Validador JSON para corrigir e mesclar novamente.

É gratuito e funciona no celular e offline?

Sim, a ferramenta é gratuita. Todos os controles que decidem se a mesclagem está correta — os dois modos, as quatro estratégias de arrays, o campo chave, a política de nulos, a ordem das chaves, as quatro indentações e os dois formatos de saída — são gratuitos, e funciona em celulares e tablets. Continua funcionando offline após o carregamento, e o Pro amplia apenas a escala: mais documentos, o limite do seu próprio dispositivo em vez de um teto fixo, e um lote entregue como um único arquivo compactado.

4.8de 5

de 70 avaliações

Avalie esta ferramenta

Toque numa estrela — leva um segundo