IA no seu dispositivo — profissional e privado.

Removedor de chaves JSON

Remova chaves JSON por nome, curinga, regex ou caminho

  • No seu dispositivo, não nos nossos servidores
  • Os números mantêm o valor exato
  • Nomes, curingas, regex ou caminhos
  • Veja as correspondências antes de remover

Solte aqui um arquivo JSON

Um arquivo até 25.0 MB · .json, .jsonl, .ndjson, .geojson, .txt

Ou cole JSON
Regras de remoção
Predefinições

Um clique. Uma predefinição substitui as regras atuais.

Corresponder chaves por
Corresponder chaves por

* é qualquer sequência de caracteres: temp*, *_id, *secret*.

O que acontece com uma correspondência
As chaves correspondentes são
Estilo de remoção

Aplica-se a regras de nome, curinga e regex. Os caminhos já indicam a sua profundidade.

Saída
Saída

Devolve o seu próprio arquivo menos as remoções: mesma indentação, mesmos fins de linha.

O seu plano

Gratuito: um documento até 25.0 MB. Todos os modos de correspondência, Manter, Ocultar e todas as predefinições incluídos.

Nenhum documento carregado

Como remover chaves de um JSON

  1. 1Cole ou solte o seu JSONCole o JSON na caixa ou solte um arquivo .json, .jsonl, .ndjson, .geojson ou .txt. É lido no seu dispositivo e nunca enviado. Cada chave única é catalogada de imediato: quantas vezes aparece, que tipos de valor tem, onde ocorre primeiro e um valor de exemplo.
  2. 2Marque as chaves para retirarAbra a aba Chaves e marque qualquer chave da lista. Use a pesquisa para reduzir uma lista longa e Todas, Nenhuma ou Inverter para trabalhar em bloco. As chaves marcadas correspondem por nome exato.
  3. 3Ou escreva um padrãoEscolha Exato, Curinga, Regex ou Caminho nas configurações e escreva uma regra por linha, ou várias separadas por vírgulas. Curinga entende temp*, *_id e *secret*. Caminho entende user.email e data[].id, que atingem um ponto específico do documento em vez de todas as chaves com esse nome.
  4. 4Ou clique numa predefiniçãoNove predefinições de um clique cobrem as limpezas habituais: remover nulos, strings vazias, arrays vazios, objetos vazios, tudo o que é falsy, ou qualquer chave iniciada por _, __, $ ou @. Uma predefinição substitui as regras atuais em vez de se somar a elas.
  5. 5Verifique a contagem antes de executarO painel de configurações mostra quantas chaves correspondem e quantos lugares ocupam, atualizado enquanto você escreve. Nada mudou ainda: é esse o número que você está prestes a remover.
  6. 6Escolha o que acontece com uma correspondênciaRemover apaga a chave. Manter inverte a regra e só as chaves correspondentes sobrevivem, com toda a subárvore intacta. Ocultar deixa a chave e substitui o valor por "***", de modo que um consumidor que exige o campo continua lendo o documento.
  7. 7Escolha o estilo de saídaManter conserva a sua formatação original byte a byte e é a opção padrão. Ou reindente com 2 espaços, 4 espaços ou tabulação, ou minifique. Seja qual for a escolha, os valores são copiados em vez de reescritos, por isso números longos e decimais precisos voltam exatamente como entraram.
  8. 8Revise o diff e baixeA aba Diff mostra o original com as linhas removidas riscadas e as linhas alteradas marcadas à parte. Baixe o resultado, copie-o, ou clique em Encadear para reintroduzi-lo e fazer outra passagem.

O que esta ferramenta de remoção de chaves JSON oferece

Um conjunto completo para remover campos de JSON. Carregue um arquivo ou cole qualquer JSON e a ferramenta o analisa de imediato, listando cada chave única com o número de ocorrências, tipos de valor, primeiro caminho e um valor de exemplo, para você saber sempre o que está prestes a apagar. Remova chaves específicas de objetos JSON por nome, lista, padrão com curinga ou caminho com pontos, recursivamente em toda a árvore. Selecione chaves com caixas, escreva padrões ou clique numa predefinição, verifique a contagem ao vivo e remova num clique.

  • Catálogo automático, em qualquer tamanho — Cada chave única do seu JSON é catalogada de imediato: quantas vezes aparece, que tipos de valor tem, o primeiro caminho de exemplo e um valor de amostra. Filtre, pesquise e marque em vez de adivinhar nomes. Não há tamanho a partir do qual isto deixe de funcionar em silêncio.
  • Quatro formas de indicar as chaves — Nomes exatos, curingas (temp*, *_id, *secret*), expressões regulares completas e caminhos com pontos que apontam para um ponto do documento. As chaves marcadas e os padrões escritos se combinam.
  • Remover, manter ou ocultar — Remover apaga o que corresponde. Manter inverte e descarta o resto, deixando intacta toda a subárvore de uma chave correspondente. Ocultar deixa a chave e substitui o valor por "***", para o documento continuar cabendo no mesmo esquema.
  • Uma contagem antes, um diff depois — O painel conta chaves e lugares correspondentes enquanto você escreve, antes de algo mudar. Depois, o cartão mostra chaves únicas removidas, lugares limpos e tamanhos antes e depois, e a aba Diff marca separadamente linhas removidas e alteradas.

Corresponder chaves: nomes, curingas, regex e caminhos

Quatro modos, e não são intercambiáveis. Exato corresponde ao nome literalmente: uma chave chamada id* é removida escrevendo id*, e escrever id não toca em idx. Curinga trata * como qualquer sequência de caracteres e entende as três formas que as pessoas realmente usam: temp* para um prefixo, *_id para um sufixo e *secret* para qualquer coisa que contenha um termo. Regex aceita qualquer expressão regular e a testa contra cada nome de chave, o modo a usar quando a regra é "tudo o que termina em At ou Date".

Caminho é o que muda o que é possível. Um nome corresponde em todo lugar; um caminho corresponde num lugar. Num documento com user.email e contact.email, escrever email remove ambos, e não há forma de dizer "apenas o que está sob user" com um nome. Escrever user.email remove exatamente esse. Os caminhos estão ancorados no início do documento, por isso não podem derivar; [] marca um nível de array, por isso data[].id entra numa lista; * vale exatamente um nível e ** qualquer número, por isso **.password a encontra onde quer que esteja escondida.

  • Exato — O nome da chave, literalmente. Distingue maiúsculas, a menos que você ative a opção. Um por linha, ou vários separados por vírgulas.
  • Curinga — * é o único caractere especial, por isso uma chave com um ponto de interrogação ou um ponto continua sendo encontrada escrevendo-a. prefixo*, *sufixo e *contém* funcionam, e * pode aparecer no meio.
  • Regex — Testada contra o nome da chave com o padrão que você escrever. Uma expressão por linha, não separadas por vírgulas, porque um quantificador como a{1,2} contém uma vírgula. Uma expressão inválida é informada em vez de não corresponder em silêncio.
  • Caminho — Segmentos separados por pontos desde o início do documento. [] para um nível de array, * para um nível, ** para qualquer número. O $ inicial é opcional.
  • Recursivo — Aplica-se às regras por nome: desativado, só as chaves do nível superior são consideradas. Os caminhos já indicam a sua profundidade e o ignoram.
  • Chaves marcadas — As caixas da aba Chaves são regras de nome exato e se combinam com o que você escreveu.

Modo Manter: decidir que chaves sobrevivem

O modo Manter inverte a pergunta. Em vez de nomear o que sai, você nomeia o que fica, e todo o resto é descartado. É a forma mais rápida de reduzir um registro largo aos poucos campos que você quer, e funciona em todos os níveis ao mesmo tempo.

Para ser útil, duas coisas precisam ser verdadeiras, e ambas são fáceis de errar. Uma chave correspondente mantém toda a sua subárvore: manter user devolve o objeto user inteiro, não um vazio. E uma chave que contém uma correspondência precisa sobreviver para que a correspondência tenha onde viver: manter email numa lista de usuários devolve cada usuário apenas com o seu email, em vez de um documento vazio. Tudo o que não corresponde nem contém uma correspondência é removido.

  • Manter um ramo — Mantenha user em {"user":{"id":1},"n":2} e obtém {"user":{"id":1}} — o objeto chega intacto.
  • Manter uma folha — Mantenha email em {"user":{"email":"a","id":1},"n":2} e obtém {"user":{"email":"a"}} — user sobrevive porque a correspondência está dentro.
  • Dentro de arrays — Os elementos de um array nunca são removidos, por isso manter um campo de uma lista de registros dá o mesmo número de registros, cada um reduzido.
  • Sem correspondências — Se nada corresponder, o resultado é um objeto vazio. Essa é a resposta honesta a "não manter nada", e a contagem ao vivo avisa você antes de executar.

Ocultar um valor em vez de apagar a chave

Apagar uma chave muda a forma do documento. Normalmente é o que você quer, e às vezes é exatamente o que não pode ter: um consumidor que valida contra um esquema, uma fixture de teste cuja lista de campos é verificada, uma linha de registro da qual um analisador espera um conjunto fixo de chaves. Ocultar deixa a chave exatamente onde está e substitui o valor pela string "***".

A substituição cobre todo o valor, por isso ocultar uma chave cujo valor é um objeto substitui o objeto inteiro — o segredo não sobrevive um nível abaixo. Ocultar está disponível em todos os modos de correspondência e combina naturalmente com um caminho ou com uma regra **.token quando você prepara um documento para entregar a alguém.

  • O esquema continua válido — A lista de chaves não muda, por isso qualquer verificação de campos obrigatórios continua passando.
  • Os valores saem inteiros — Ocultar um objeto ou um array substitui tudo, não apenas as folhas.
  • Evidente numa revisão — "***" é lido como algo deliberado num pull request, ao contrário de um campo ausente.
  • Indisponível no modo Manter — Manter decide que membros sobrevivem; um sobrevivente com o valor substituído não está nem mantido nem removido, por isso o controle não está disponível aí.

Por que os valores que você mantém voltam sem alterações

A forma habitual de editar JSON numa página web é lê-lo na memória, alterá-lo e voltar a escrevê-lo. É uma linha de código e estraga documentos em silêncio. Ler 12345678901234567890 e voltar a escrevê-lo dá 12345678901234567000. 1e400 torna-se null. 0.1234567890123456789 perde os últimos dígitos. As chaves que parecem números passam para a frente e são reordenadas, por isso {"10":…,"2":…} volta como {"2":…,"10":…}. As chaves duplicadas são reduzidas à última. \u00e9 é reescrito como caractere acentuado, o que importa se algo a jusante espera ASCII puro.

Nada disto é um erro de arredondamento aceitável, porque quem pediu para apagar um campo não pediu nada disso, e nada na página avisa que isso aconteceu. Esta ferramenta trabalha sobre o texto original: localiza os intervalos de bytes das chaves que você nomeou e copia todo o resto. Os valores nunca são reescritos, por isso não podem mudar. A saída Manter devolve o seu próprio arquivo menos as partes removidas — a mesma indentação, os mesmos fins de linha, tudo igual. Reindentar com 2 ou 4 espaços, uma tabulação, ou minificar altera apenas o espaço entre tokens; cada número, string e chave continua sendo copiado em vez de regerado.

  • Inteiros grandes — Identificadores acima de 9 007 199 254 740 991 — ids do Twitter/X, Snowflake, algumas chaves de banco de dados — mantêm todos os dígitos.
  • Decimais de alta precisão — Coordenadas e valores monetários com mais dígitos do que cabe num double ficam intactos.
  • Ordem das chaves — Os membros ficam na ordem em que foram escritos, incluindo chaves que parecem números.
  • Chaves duplicadas — Um documento com a mesma chave duas vezes mantém ambas, porque uma edição de texto não tem razão para fundi-las.
  • Escapes — \u00e9 continua \u00e9, e uma barra escapada continua escapada.
  • A sua formatação — O modo Manter não é uma reimpressão que por acaso fica igual. São os seus bytes, menos as remoções.

Um documento de 25 MB é catalogado em cerca de 0,1 segundos e editado em cerca de 0,13, fora da thread principal, por isso a página continua responsiva enquanto você trabalha.

JSON Lines e NDJSON

Registros, exportações de bancos de dados e APIs de streaming quase nunca produzem um único documento JSON grande. Produzem um valor JSON por linha — JSON Lines, também chamado NDJSON — e essa é exatamente a forma com mais probabilidade de conter algo que você precisa retirar antes de compartilhar.

Um arquivo .jsonl ou .ndjson é tratado automaticamente como um valor por linha. Também um arquivo .json ou .txt que não seja lido como um documento único mas cujas linhas individuais sejam. Cada linha é editada com as mesmas regras e o resultado mantém um registro por linha, por isso volta diretamente para o que o produziu. O catálogo de chaves é construído sobre todas as linhas ao mesmo tempo, por isso um campo que aparece num registro em mil continua surgindo na lista com contagem 1.

  • Detectado, não configurado — A extensão decide quando é explícita; caso contrário, o documento inteiro é tentado primeiro, por isso um .json formatado nunca é confundido com linhas delimitadas.
  • As contagens abrangem o arquivo — Ocorrências, tipos de valor e valores de exemplo são recolhidos de todas as linhas.
  • A forma por linhas se mantém — A saída é um registro por linha seja qual for o estilo escolhido, porque um NDJSON formatado deixa de ser NDJSON.
  • Linhas em branco — As linhas vazias entre registros são ignoradas em vez de tratadas como um documento inválido.

Por que remover chaves de um JSON?

Os objetos JSON acumulam campos que não deviam viajar com eles: sinalizadores de depuração, tokens de autenticação, marcadores nulos, chaves temporárias de cálculo. Removê-los antes de compartilhar, registrar ou versionar o documento reduz o tamanho e, mais frequentemente, é a diferença entre um arquivo que você pode colar num ticket e um que não pode.

  • Antes de sair da sua máquina — Retire senhas, tokens, segredos e identificadores internos de uma resposta de API antes de colá-la num relatório de erro. O documento não vai a lugar nenhum para ser limpo, que é a única versão dessa promessa que significa alguma coisa.
  • Cargas menores — Retirar campos nulos e vazios de uma exportação grande costuma tirar uma porcentagem de dois dígitos do tamanho, e a ferramenta mostra o antes e o depois em kilobytes.
  • Fixtures e configurações mais limpas — Remova campos gerados, de depuração e de data antes de versionar uma fixture de API, para que o próximo diff mostre o que realmente mudou e não um novo identificador de requisição.
  • Remodelar uma resposta — O modo Manter transforma um registro de 40 campos nos quatro de que você precisa, em todos os níveis ao mesmo tempo, o que de outra forma exigiria um script.

Todas as funcionalidades num relance

  • Painel de chaves — Analisado automaticamente do seu documento, em qualquer tamanho. Nome, ocorrências, tipos de valor, primeiro caminho e valor de exemplo. Filtro por nome; Todas, Nenhuma e Inverter.
  • Ações rápidas — Nove predefinições de um clique: nulos, strings vazias, arrays vazios, objetos vazios, tudo falsy, e chaves iniciadas por _, __, $ ou @.
  • Padrões manuais — Um por linha, ou separados por vírgulas em modo exato, curinga e caminho. Quatro modos: Exato, Curinga, Regex e Caminho.
  • Contagem ao vivo — Quantas chaves correspondem e quantos lugares ocupam, atualizado enquanto você escreve e antes de algo mudar.
  • Recursivo — Corresponder a qualquer profundidade, incluindo dentro de arrays, ou limitar as regras por nome ao nível superior.
  • Ignorar maiúsculas — ID, id e Id correspondem todos a uma única regra id.
  • Modo Manter — Inverter a regra: manter o que corresponde, com toda a subárvore, e descartar o resto.
  • Modo Ocultar — Substituir o valor por "***" em vez de apagar a chave.
  • Estilo de saída — Manter exatamente a formatação original, ou reindentar com 2 espaços, 4 espaços ou tabulação, ou minificar.
  • Visualização diff — O original com as linhas removidas riscadas e as alteradas marcadas à parte, mais totais exatos para todo o documento.
  • Encadear — Carregar o resultado como nova entrada para uma segunda passagem, sem copiar nada.
  • Baixar ou copiar — Salvar o resultado como arquivo ou copiá-lo. O Pro junta 20 documentos num ZIP.

Limites e o que o Pro muda

Tudo o que esta ferramenta faz é gratuito. Todos os modos de correspondência, Manter, Ocultar, as nove predefinições, JSON Lines, todos os estilos de saída e o catálogo completo de chaves funcionam no plano gratuito, num documento até 25 MB — o que cobre a grande maioria das respostas de API, exportações e fixtures. O Pro compra escala e entrega, não funcionalidades.

  • Gratuito — Um documento de cada vez, até 25 MB. Todas as funcionalidades, sem marca d'água, sem nada enviado.
  • Pro: tamanho — O limite passa a ser o que o seu dispositivo consegue realmente processar em vez de um número fixo, com um aviso em vez de uma recusa quando um arquivo é excepcionalmente grande para ele.
  • Pro: lote — Coloque até 20 documentos em fila, aplique o mesmo conjunto de regras a todos e baixe os resultados num único ZIP.
  • Por que existe o limite — 25 MB é onde um celular intermediário continua confortável, não onde a ferramenta sofre. Em nenhum dos planos é enviado seja o que for.

Perguntas frequentes

Meus dados estão seguros?

Sim. O documento é lido e editado no seu dispositivo e nunca é enviado — não há servidor para onde mandá-lo, e por isso a ferramenta continua funcionando com a rede desligada. Aqui isso conta mais do que na maioria das ferramentas, porque a razão habitual para remover uma chave JSON é que ela contém uma senha, um token ou dados de um cliente.

Remover uma chave altera algum dos valores que mantenho?

Não, e é nisso que a maioria das ferramentas JSON online falha. Elas leem o documento na memória e voltam a escrevê-lo, o que arredonda silenciosamente 12345678901234567890 para 12345678901234567000, transforma 1e400 em null, reordena as chaves que parecem números, descarta todas as chaves duplicadas exceto a última e reescreve \u00e9 como caractere acentuado. Esta ferramenta edita o texto original: tudo o que você não pediu para remover é copiado byte a byte, por isso nada disso pode acontecer, mesmo quando você também reindenta a saída.

Remove chaves de objetos aninhados e arrays?

Sim. Com Recursivo ativado, que é o padrão, cada objeto do documento é visitado, incluindo objetos aninhados dentro de arrays a qualquer profundidade. Desative Recursivo para limitar a remoção ao nível superior.

Que padrões com curinga são suportados?

Três formas, combináveis. 'prefixo*' corresponde a chaves que começam assim, por isso 'temp*' cobre tempId e tempData. '*sufixo' corresponde às que terminam assim, por isso '*_id' cobre userId e postId. '*contém*' corresponde em qualquer posição do nome. O asterisco é o único caractere especial, por isso uma chave que contenha literalmente um ponto de interrogação continua sendo encontrada se você a escrever exatamente como é.

Em que difere o modo Caminho de escrever um nome de chave?

Um nome corresponde em todo lugar; um caminho corresponde num único lugar. Escrever 'email' remove user.email, contact.email e qualquer outro email do documento. Escrever o caminho 'user.email' remove apenas o que está dentro de user. Os caminhos estão ancorados no início do documento, usam [] para um nível de array (assim 'data[].id' entra numa lista), aceitam '*' para exatamente um nível e '**' para qualquer número de níveis.

O que faz o modo Manter com as chaves dentro da que mantive?

Deixa-as intactas. Manter 'user' devolve o objeto user completo com tudo lá dentro. Manter uma chave mais profunda também mantém os objetos acima dela, porque de outro modo a correspondência não teria onde viver: manter 'email' num documento de usuários devolve cada usuário apenas com o seu email.

Para que serve o modo Ocultar?

Apagar uma chave muda a forma do documento, e muitos consumidores rejeitam um registro com um campo ausente. Ocultar mantém a chave e substitui o valor por "***", por isso o documento continua validando contra o mesmo esquema enquanto o segredo desaparece. É a escolha certa para registros, relatórios de erro e fixtures que você vai compartilhar.

Quais são as predefinições de ação rápida?

Nove regras de um clique. Remover nulos tira toda chave cujo valor seja null; Strings vazias tira as que valem ""; Arrays vazios e Objetos vazios tiram as que valem [] e {}; Tudo falsy cobre essas mais false e zero; e _private, __meta, $internal e @meta tiram chaves iniciadas por esses caracteres, que é como GraphQL, Angular e muitas APIs internas marcam os seus próprios campos. Uma predefinição substitui as regras atuais em vez de se somar a elas.

Posso ver o que vai ser removido antes de removê-lo?

Sim. Enquanto você escreve um padrão ou marca uma chave, o painel de configurações conta as chaves correspondentes e o número de lugares que ocupam no documento. Nesse momento nada foi alterado. Depois de executar, a aba Diff mostra o original com as linhas removidas riscadas e as que apenas mudaram — uma vírgula final, por exemplo — marcadas à parte.

Suporta JSON Lines e NDJSON?

Sim, e os detecta automaticamente. Um arquivo .jsonl ou .ndjson é tratado como um valor JSON por linha; um arquivo .json ou .txt que não seja lido como um documento único mas cujas linhas sejam lidas individualmente recebe o mesmo tratamento. Cada linha é editada com as mesmas regras e o arquivo mantém um registro por linha.

E se o meu JSON for inválido?

Você recebe a linha, a coluna e um trecho do texto ao redor do problema, com um marcador no caractere exato, e a mesma mensagem em todos os navegadores em vez da redação que o seu usa. Links para o Formatador JSON e o Validador JSON ficam ao lado.

Há limite de tamanho?

O plano gratuito aceita um documento até 25 MB, o que cobre a grande maioria das respostas de API, exportações e fixtures. O Pro troca o limite de tamanho pelo que o seu dispositivo consegue realmente processar e permite colocar 20 documentos em fila, aplicar o mesmo conjunto de regras a todos e baixar os resultados num único ZIP. Todos os modos de correspondência, todas as predefinições, Manter, Ocultar, JSON Lines e todos os estilos de saída são gratuitos.

4.8de 5

de 54 avaliações

Avalie esta ferramenta

Toque numa estrela — leva um segundo