Estou criando um script PHP que alimenta dados JSON para outro script. Meu script cria dados em uma grande matriz associativa e, em seguida, gera os dados usando json_encode
. Aqui está um exemplo de script:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
O código acima produz a seguinte saída:
{"a":"apple","b":"banana","c":"catnip"}
Isso é ótimo se você tiver uma pequena quantidade de dados, mas eu preferiria algo nesse sentido:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Existe uma maneira de fazer isso no PHP sem um truque feio? Parece que alguém no Facebook descobriu isso.
php
json
pretty-print
Zach Rattner
fonte
fonte
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
cabeçalho, o Firefox mostrará o resultado usando seu próprio analisador JSON interno, enquanto o Chrome exibirá o texto sem formatação. +1 Firefox!Respostas:
O PHP 5.4 oferece a
JSON_PRETTY_PRINT
opção de uso com ajson_encode()
chamada.http://php.net/manual/en/function.json-encode.php
fonte
Content-Type
paraapplication/json
se você quiser navegador para exibir JSON bem-impresso bem.<pre>
tag como<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Essa função pega a string JSON e a recorta muito legível. Também deve ser convergente,
Entrada
Resultado
Código
fonte
Muitos usuários sugeriram que você use
O que é absolutamente certo. Mas não basta, o navegador precisa entender o tipo de dados, você pode especificar o cabeçalho antes de repetir os dados para o usuário.
Isso resultará em uma saída bem formatada.
Ou, se você gosta de extensões, pode usar o JSONView for Chrome.
fonte
Eu tive o mesmo problema.
Enfim, eu apenas usei o código de formatação json aqui:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Funciona bem para o que eu precisava.
E uma versão mais mantida: https://github.com/GerHobbelt/nicejson-php
fonte
Percebo que esta pergunta está perguntando sobre como codificar uma matriz associativa para uma string JSON bastante formatada, para que isso não responda diretamente à pergunta, mas se você tiver uma string que já esteja no formato JSON, poderá torná-la bem simples decodificando e recodificando (requer PHP> = 5.4):
Exemplo:
Isso gera:
fonte
A colagem de várias respostas se encaixa na minha necessidade de json existente:
fonte
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
Peguei o código do Composer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php e nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php O código do compositor é bom porque atualiza fluentemente de 5.3 para 5.4, mas codifica apenas o objeto, enquanto o nicejson pega as seqüências de caracteres do json, então eu as juntei. O código pode ser usado para formatar json string e / ou codificar objetos, atualmente o estou usando em um módulo Drupal.
fonte
Se você estiver no firefox, instale o JSONovich . Não é realmente uma solução PHP que eu conheço, mas faz o truque para fins de desenvolvimento / depuração.
fonte
Eu usei isso:
Ou use os cabeçalhos php como abaixo:
fonte
Maneira simples para php> 5.4: como no gráfico do Facebook
Resultado no navegador
fonte
Use
<pre>
em combinação comjson_encode()
e aJSON_PRETTY_PRINT
opção:fonte
Se você já possui JSON (
$ugly_json
)fonte
Saída colorida total: Solução minúscula
Código:
fonte
Você pode modificar um pouco a resposta de Kendall Hopkins na instrução switch para obter uma impressão bem limpa e bem identificada, passando uma string json para o seguinte:
}
Agora basta executar a função prettyPrint ($ your_json_string); inline no seu php e aproveite a impressão. Se você é um minimalista e não fazer como suportes para alguma razão, você pode se livrar daqueles facilmente substituindo o
$char.="<br>";
com$char="<br>";
no top três casos de switch on $ caractere. Veja o que você recebe para uma chamada da API do Google Maps para a cidade de Calgaryfonte
Você poderia fazê-lo como abaixo.
Acima sairia como o Facebook.
fonte
a_val
for uma matriz ou um objeto?Caso clássico para uma solução recursiva. Aqui está o meu:
Uso:
Felicidades
fonte
Esta solução torna JSON 'realmente bonito'. Não é exatamente o que o OP estava pedindo, mas permite visualizar melhor o JSON.
}
fonte
Se você usou apenas
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, você acessará o navegador da seguinte forma (usando o link do Facebook da pergunta :)):mas se você usou uma extensão chrome como JSONView (mesmo sem a opção PHP acima), obtém uma solução depurável mais legível, na qual é possível dobrar / recolher cada objeto JSON com facilidade, assim:
fonte
print_r impressão bonita para PHP
Exemplo de PHP
fonte
1 -
json_encode($rows,JSON_PRETTY_PRINT);
retorna dados pré-modificados com caracteres de nova linha. Isso é útil para a entrada da linha de comando, mas como você descobriu, não parece tão bonito no navegador. O navegador aceitará as novas linhas como fonte (e, portanto, exibir a fonte da página realmente mostrará o bonito JSON), mas elas não são usadas para formatar a saída nos navegadores. Navegadores requerem HTML.2 - use este github de função
fonte
A seguir, o que funcionou para mim:
Conteúdo do test.php:
resultado:
Observe também o uso da tag "pre" em html.
Espero que ajude alguém
fonte
a melhor maneira de formatar dados JSON é assim!
Substitua $ response pelos seus dados, que devem ser convertidos em JSON
fonte
Para aqueles que executam o PHP versão 5.3 ou anterior, você pode tentar abaixo:
fonte
Se você estiver trabalhando com MVC
tente fazer isso no seu controlador
se você chamar / getLatestUsers, obterá uma saída JSON bonita;)
fonte