Je construis un script PHP qui alimente les données JSON vers un autre script. Mon script crée des données dans un grand tableau associatif, puis génère les données à l'aide json_encode
. Voici un exemple de script:
$data = array('a' => 'apple', 'b' => 'banana', 'c' => 'catnip');
header('Content-type: text/javascript');
echo json_encode($data);
Le code ci-dessus donne la sortie suivante:
{"a":"apple","b":"banana","c":"catnip"}
C'est très bien si vous avez une petite quantité de données, mais je préférerais quelque chose dans ce sens:
{
"a": "apple",
"b": "banana",
"c": "catnip"
}
Existe-t-il un moyen de le faire en PHP sans un hack laid? Il semble que quelqu'un sur Facebook ait compris.
php
json
pretty-print
Zach Rattner
la source
la source
up_json_encode($data, JSON_PRETTY_PRINT);
Content-Type: application/json
tête, Firefox affichera le résultat en utilisant son propre analyseur JSON interne, tandis que Chrome affiche le texte brut. +1 Firefox!Réponses:
PHP 5.4 offre la
JSON_PRETTY_PRINT
possibilité d'utiliser avec l'json_encode()
appel.http://php.net/manual/en/function.json-encode.php
la source
Content-Type
àapplication/json
si vous voulez navigateur pour afficher JSON joli imprimé bien.<pre>
balise comme<?php ... $json_string = json_encode($data, JSON_PRETTY_PRINT); echo "<pre>".$json_string."<pre>";
Cette fonction prendra la chaîne JSON et la mettra en retrait très lisible. Il doit également être convergent,
Contribution
Production
Code
la source
De nombreux utilisateurs ont suggéré d'utiliser
Ce qui est tout à fait vrai. Mais cela ne suffit pas, le navigateur doit comprendre le type de données, vous pouvez spécifier l'en-tête juste avant de renvoyer les données à l'utilisateur.
Cela se traduira par une sortie bien formatée.
Ou, si vous aimez les extensions, vous pouvez utiliser JSONView pour Chrome.
la source
J'ai eu le même problème.
Quoi qu'il en soit, je viens d'utiliser le code de formatage json ici:
http://recursive-design.com/blog/2008/03/11/format-json-with-php/
Fonctionne bien pour ce dont j'avais besoin.
Et une version plus maintenue: https://github.com/GerHobbelt/nicejson-php
la source
Je me rends compte que cette question demande comment coder un tableau associatif en une chaîne JSON assez formatée, donc cela ne répond pas directement à la question, mais si vous avez une chaîne qui est déjà au format JSON, vous pouvez la faire assez simplement en le décodant et en le recodant (nécessite PHP> = 5.4):
Exemple:
Cela produit:
la source
Coller plusieurs réponses ensemble correspond à mon besoin de json existant:
la source
function json_print($json) { return '<pre>' . json_encode(json_decode($json), JSON_PRETTY_PRINT) . '</pre>'; }
J'ai pris le code de Composer: https://github.com/composer/composer/blob/master/src/Composer/Json/JsonFile.php et nicejson: https://github.com/GerHobbelt/nicejson-php/blob /master/nicejson.php Le code Composer est bon car il se met à jour couramment de 5.3 à 5.4 mais il code uniquement l'objet alors que nicejson prend des chaînes json, donc je les ai fusionnées. Le code peut être utilisé pour formater une chaîne json et / ou encoder des objets, je l'utilise actuellement dans un module Drupal.
la source
Si vous êtes sur Firefox, installez JSONovich . Pas vraiment une solution PHP que je connais, mais elle fait l'affaire à des fins de développement / débogage.
la source
J'ai utilisé ceci:
Ou utilisez les en-têtes php comme ci-dessous:
la source
Un moyen simple pour php> 5.4: comme dans le graphique Facebook
Résultat dans le navigateur
la source
Utiliser
<pre>
en combinaison avecjson_encode()
et l'JSON_PRETTY_PRINT
option:la source
Si vous avez déjà JSON (
$ugly_json
)la source
Avoir une sortie couleur complète: Tiny Solution
Code:
la source
Vous pouvez modifier un peu la réponse de Kendall Hopkins dans l'instruction switch pour obtenir une impression assez propre et bien en retrait en passant une chaîne json dans ce qui suit:
}
Il suffit maintenant d'exécuter la fonction prettyPrint ($ your_json_string); en ligne dans votre php et profitez de l'impression. Si vous êtes minimaliste et que vous n'aimez pas les supports pour une raison quelconque, vous pouvez vous en débarrasser facilement en remplaçant le
$char.="<br>";
par$char="<br>";
dans les trois premiers commutateurs sur $ char. Voici ce que vous obtenez pour un appel API Google Maps pour la ville de Calgaryla source
Vous pouvez le faire comme ci-dessous.
Ci-dessus produirait un peu comme Facebook.
la source
a_val
c'est un tableau ou un objet?Cas classique pour une solution récursive. Voici la mienne:
Usage:
À votre santé
la source
Cette solution rend le JSON «vraiment joli». Pas exactement ce que l'OP demandait, mais cela vous permet de mieux visualiser le JSON.
}
la source
Si vous l'avez utilisé uniquement
$json_string = json_encode($data, JSON_PRETTY_PRINT);
, vous obtiendrez dans le navigateur quelque chose comme ça (en utilisant le lien Facebook de la question :)):mais si vous avez utilisé une extension chrome comme JSONView (même sans l'option PHP ci-dessus), vous obtenez une solution débogable plus lisible où vous pouvez même plier / réduire chaque objet JSON comme ceci:
la source
print_r joli print pour PHP
Exemple PHP
la source
1 -
json_encode($rows,JSON_PRETTY_PRINT);
renvoie des données prettifiées avec des caractères de nouvelle ligne. Cela est utile pour la saisie en ligne de commande, mais comme vous l'avez découvert, cela ne semble pas aussi joli dans le navigateur. Le navigateur acceptera les sauts de ligne comme source (et donc, l'affichage de la page source affichera en effet le joli JSON), mais ils ne sont pas utilisés pour formater la sortie dans les navigateurs. Les navigateurs nécessitent HTML.2 - utilisez ce github
la source
Ce qui a fonctionné pour moi:
Contenu de test.php:
production:
Notez également l'utilisation de la balise "pre" en html.
J'espère que cela aide quelqu'un
la source
la meilleure façon de formater les données JSON est comme ça!
Remplacez $ response par vos données qui doivent être converties en JSON
la source
Pour ceux qui exécutent PHP version 5.3 ou antérieure, vous pouvez essayer ci-dessous:
la source
Si vous travaillez avec MVC
essayez de le faire dans votre contrôleur
alors si vous appelez / getLatestUsers vous obtiendrez une jolie sortie JSON;)
la source