151 votes

PHP "jolie impression" json_encode

Double Possible:
Impression de JSON avec PHP

Je travaille sur un script qui crée un fichier JSON. Droit maintenant, je suis juste en utilisant json_encode (php 5.2.x) pour coder un tableau en sortie json. Puis-je imprimer la valeur retournée pour un fichier et l'enregistrer. Le problème est que le client veut pouvoir ouvrir ces fichiers JSON pour des raisons de lisibilité. Donc je voudrais ajouter des sauts de ligne dans et "pretty print" la sortie json. Des idées sur comment faire cela? Ma seule autre solution que je vois c'est de ne pas utiliser json_encode à tous et tout simplement écrire le contenu du fichier manuellement et ajouter dans mes sauts de ligne pour chaque ligne. Merci.

Voici ce que j'obtiens:

{"product_name":"prod1","val1":1,"val2":8}

Voici ce que je veux:

{
  "product_name":"prod1",
  "val1":1,
  "val2":8
}

Je suppose que je pourrais aussi il suffit de remplacer chaque virgule, avec une commande suivie par un \n, et de même pour les supports... les Pensées?

356voto

beret Points 936

PHP dispose de l'option JSON_PRETTY_PRINT depuis la version 5.4.0 (date de sortie 01-mars-2012).

Cela devrait faire le travail:

 $json = json_decode($string);
echo json_encode($json, JSON_PRETTY_PRINT);
 

Voir http://www.php.net/manual/en/function.json-encode.php

Remarque: n'oubliez pas de renvoyer "<pre>" avant et </ pre> après, si vous l'imprimez en HTML;)

11voto

sg3s Points 6772

Hmmm $array = json_decode($json, true); fera de votre chaîne un tableau facile à imprimer avec print_r($array, true);

Mais si vous voulez vraiment embellir votre json ... Regardez ça

4voto

Cam Tullos Points 675

Voici une fonction pour mettre en valeur votre json: pretty_json

2voto

bohwaz Points 32

Et pour PHP 5.3, vous pouvez utiliser cette fonction, qui peut être intégrée à une classe ou utilisée dans un style procédural:

http://svn.kd2.org/svn/misc/libs/tools/json_readable_encode.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X