web-dev-qa-db-fra.com

PHP "jolie impression" json_encode

Duplicate possible:
Pretty-Printing JSON avec PHP

Je travaille sur un script qui crée un fichier JSON. Pour le moment, j'utilise simplement json_encode (PHP 5.2.x) pour encoder un tableau en sortie JSON. Ensuite, j'imprime la valeur renvoyée dans un fichier et l'enregistre. Le problème est que le client veut pouvoir ouvrir ces fichiers JSON pour plus de lisibilité. J'aimerais donc ajouter des sauts de ligne et "imprimer" la sortie JSON. auriez vous des idées pour faire ça? Ma seule autre alternative que je peux voir est de ne pas utiliser du tout json_encode et d'écrire simplement le contenu du fichier manuellement et d'ajouter mes propres sauts de ligne pour chaque ligne.

Voici ce que je reçois:

{"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 simplement remplacer chaque virgule par une commande suivie d'un\n, et même chose pour les crochets ... Pensées?

132
Brian

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 rappeler "<pre>" avant et "</ pre>" après, si vous l'imprimez en HTML pour préserver le formatage;)

313
petrkotek

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 ... Cochez cette case

11
sg3s

Voici une fonction pour mettre en valeur votre json: pretty_json

5
Cam Tullos

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

3
bohwaz