Como posso exibir JSON em um formato fácil de ler (para leitores humanos)? Estou procurando principalmente recuo e espaço em branco, talvez até com cores / estilos de fonte / etc.
javascript
json
pretty-print
Marca
fonte
fonte
<pre>
tag.Respostas:
A impressão bonita é implementada nativamente no
JSON.stringify()
. O terceiro argumento permite uma impressão bonita e define o espaçamento a ser usado:Se você precisar de destaque de sintaxe, poderá usar um pouco de mágica de regex como:
Veja em ação aqui: jsfiddle
Ou um snippet completo fornecido abaixo:
Mostrar snippet de código
fonte
<pre>
.#transactionResponse
elemento possuiwhite-space: pre;
um estilo CSS.stringify(...)
funciona em objetos JSON , não em cadeias JSON. Se você tem uma string, você precisaJSON.parse(...)
primeiroA resposta do usuário Pumbaa80 é ótima se você tem um objeto que deseja imprimir bastante. Se você estiver iniciando a partir de uma sequência JSON válida que deseja imprimir, precisará convertê-la em um objeto primeiro:
Isso cria um objeto JSON a partir da string e depois o converte novamente em uma string usando a bonita impressão de JSON stringify.
fonte
JSON.parse
então eu o modifiquei para serJSON.stringify(jsonString, null, 2)
. Depende do seu JSON / Objeto.<pre></pre>
tags.JSON.parse
única morre se você tem um str JSON inválida ou já é convertido em um objeto ... certifique-se que você sabe que tipo de dados você está lidando com antes de tentarJSON.parse
Melhor maneira.
Prettify JSON Array em Javascript
fonte
Com base na resposta de Pumbaa80, modifiquei o código para usar as cores console.log (trabalhando no Chrome com certeza) e não HTML. A saída pode ser vista dentro do console. Você pode editar as variáveis _ dentro da função, adicionando um pouco mais de estilo.
Aqui está um bookmarklet que você pode usar:
Uso:
Edit: Eu apenas tentei escapar do símbolo% com esta linha, após a declaração das variáveis:
Mas descubro que o Chrome não suporta% de escape no console. Estranho ... Talvez isso funcione no futuro.
Felicidades!
fonte
No caso de exibição em HTML, você deve adicionar um balise
<pre></pre>
Exemplo:
Mostrar snippet de código
fonte
<pre>
é uma obrigação se você mostrar o JSON em um<div>
. Votado apenas para essa dica!Eu uso a extensão JSONView Chrome (é a mais bonita possível :):
Editar: adicionado
jsonreport.js
Também liberei um visualizador de impressão bonita JSON independente on-line, jsonreport.js, que fornece um relatório HTML5 legível por humanos, que você pode usar para visualizar quaisquer dados JSON.
Você pode ler mais sobre o formato em Novo formato de relatório HTML5 JavaScript .
fonte
Você pode usar
console.dir()
, que é um atalho paraconsole.log(util.inspect())
. (A única diferença é que ela ignora qualquerinspect()
função personalizada definida em um objeto.)Ele usa realce de sintaxe , recuo inteligente , remove aspas das chaves e apenas torna a saída a mais bonita possível.
e para a linha de comando:
cat package.json | node -e "process.stdin.pipe(new stream.Writable({write: chunk => console.dir(JSON.parse(chunk), {depth: null, colors: true})}))"
fonte
Aqui está o incrível HTML de user123444555621 adaptado para terminais. Útil para depurar scripts de Nó:
Uso:
fonte
Para fins de depuração, eu uso:
fonte
console.debug(data);
(pelo menos) Chrome e Firefox. Ele não mostra uma representação JSON dedata
, muito menos uma bem impressa.console.debug("%s: %o x %d", str, data, cnt);
ainda pode ser útil para alguém.console.dir
que permite navegar pelos dados.Insatisfeito com outras impressoras bonitas para Ruby, escrevi o meu ( NeatJSON ) e depois o transportei para JavaScript, incluindo um formatador online gratuito . O código é gratuito sob licença do MIT (bastante permissivo).
Recursos (todos opcionais):
Copiarei o código fonte aqui para que este não seja apenas um link para uma biblioteca, mas encorajo você a ir para a página do projeto GitHub , pois ele será mantido atualizado e o código abaixo não.
fonte
Muito obrigado @todos! Com base nas respostas anteriores, aqui está outro método variante que fornece regras de substituição personalizadas como parâmetro:
fonte
Isso funciona bem:
Leia mais aqui: https://developer.mozilla.org/pt-BR/docs/Web/API/Console/table
fonte
O JSON de Douglas Crockford na biblioteca JavaScript imprimirá bastante o JSON através do método stringify.
Você também pode achar úteis as respostas para essa pergunta mais antiga: Como imprimir JSON em um shell script (unix)?
fonte
Hoje encontrei um problema com o código do @ Pumbaa80. Estou tentando aplicar o destaque da sintaxe JSON aos dados que estou renderizando em uma exibição do Mithril , portanto, preciso criar nós DOM para tudo no
JSON.stringify
saída.Também divido o regex muito longo em seus componentes.
Código em contexto no Github aqui
fonte
Aqui está um simples formato JSON / componente de cor escrito em React:
Veja-o trabalhando neste CodePen: https://codepen.io/benshope/pen/BxVpjo
Espero que ajude!
fonte
Você pode usar
JSON.stringify(your object, null, 2)
O segundo parâmetro pode ser usado como uma função substituta, que aceita key e Val como parâmetros. Isso pode ser usado caso você deseje modificar algo no objeto JSON.mais referência: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
fonte
Se você precisar que isso funcione em uma área de texto, a solução aceita não funcionará.
<textarea id='textarea'></textarea>
$("#textarea").append(formatJSON(JSON.stringify(jsonobject),true));
fonte
Se você está procurando uma boa biblioteca para fazer json em uma página da web ...
Prism.js é muito bom.
http://prismjs.com/
Eu descobri que usar JSON.stringify (obj, undefined, 2) para obter o recuo e, em seguida, usar o prisma para adicionar um tema foi uma boa abordagem.
Se você estiver carregando no JSON por meio de uma chamada ajax, poderá executar um dos métodos utilitários do Prism para pretender
Por exemplo:
fonte
Isso é legal:
https://github.com/mafintosh/json-markup de
mafintosh
HTML
A folha de estilo de exemplo pode ser encontrada aqui
fonte
Não foi possível encontrar nenhuma solução que tivesse um bom destaque de sintaxe para o console, então aqui está o meu 2p
Instalar e adicionar dependência cli-realce
Definir logjson globalmente
Usar
fonte
Aqui está como você pode imprimir sem usar a função nativa.
fonte
A maneira mais simples de exibir um objeto para fins de depuração:
Se você deseja exibir o objeto no DOM, considere que ele pode conter seqüências de caracteres que seriam interpretadas como HTML. Portanto, você precisa fazer algumas escapadas ...
fonte
fonte
Para realçar e embelezá-lo
HTML
usandoBootstrap
:fonte
Eu recomendo usar o HighlightJS . Ele usa o mesmo princípio da resposta aceita, mas funciona também para muitos outros idiomas e possui muitos esquemas de cores predefinidos . Se estiver usando o RequireJS , você poderá gerar um módulo compatível com
A geração depende de Python3 e Java. Adicionar
-n
para gerar uma versão não minificada.fonte