193 votes

Afficher JSON en HTML

Avez-vous des recommandations sur la façon d'incorporer du JSON dans une page HTML en veillant à ce que le JSON soit formaté dans un style lisible par l'homme ? Par exemple, lorsque vous affichez du XML dans un navigateur, la plupart des navigateurs affichent le XML formaté (indentation, sauts de ligne appropriés, etc.). J'aimerais obtenir le même résultat pour JSON.

La coloration de la syntaxe serait un plus.

Merci

0 votes

tohtml.com/javaProperties a bien fonctionné pour moi ; il rend le style "inline" ; très utile pour un simple copier-coller dans quelque chose d'autre.

0 votes

Consultez ma bibliothèque azimi.me/json-formatter-js

163voto

John Points 9543

Vous pouvez utiliser la fonction JSON.stringify avec du JSON non formaté. Elle le restitue de manière formatée.

JSON.stringify({ foo: "sample", bar: "sample" }, null, 4)

Cela tourne

{ "foo": "sample", "bar": "sample" }

en

 {
     "foo": "sample", 
     "bar": "sample" 
 }

Maintenant que les données sont dans un format lisible, vous pouvez utiliser la fonction Google Code Prettify script comme suggéré par @A. Levy pour le code couleur.

Il convient d'ajouter que IE7 et les navigateurs plus anciens ne supportent pas la méthode JSON.stringify .

4 votes

Pour les navigateurs qui ne prennent pas en charge JSON.stringify (disons-le tout net, le vieil IE), il existe un excellent polyfill que vous pouvez utiliser pour obtenir la fonctionnalité ( json.org/js.html ). Il suffit d'inclure cela et vous serez couvert à peu près partout.

1 votes

Une autre astuce consiste à mettre un <br>à la place du champ d'indentation (4), vous obtiendrez de jolis sauts de ligne.

5 votes

Meilleure réponse, fait le travail et ne nécessite pas d'inclure une bibliothèque tierce.

110voto

RedFilter Points 84190

Si vous l'affichez délibérément pour l'utilisateur final, enveloppez le texte JSON dans <PRE> y <CODE> balises, par exemple :

<html>
<body>
<pre>
<code>
[
    {
        color: "red",
        value: "#f00"
    },
    {
        color: "green",
        value: "#0f0"
    },
    {
        color: "blue",
        value: "#00f"
    },
    {
        color: "cyan",
        value: "#0ff"
    },
    {
        color: "magenta",
        value: "#f0f"
    },
    {
        color: "yellow",
        value: "#ff0"
    },
    {
        color: "black",
        value: "#000"
    }
]

</code>
</pre>
</body>
</html>

Sinon, j'utiliserais Visualisateur JSON .

11 votes

Et que se passe-t-il si la chaîne de caractères est sur une seule ligne ? comment fait-il pour qu'elle soit joliment formatée comme ça ?

2 votes

Tu es génial. C'est la réponse la plus simple à ce qui a été une question très complexe -- comment imprimer joliment python json en html. merci.

1 votes

Je ne sais pas pourquoi il n'y a pas plus de votes positifs. Une solution simple et facile.

65voto

A. Levy Points 8344

Pour la coloration syntaxique, utilisez code Prettify . Je crois que c'est ce que StackOverflow utilise pour sa mise en évidence du code.

  1. Enveloppez votre JSON formaté dans des blocs de code et donnez-leur la classe "prettyprint".
  2. Incluez prettify.js dans votre page.
  3. Assurez-vous que la balise body de votre document appelle prettyPrint() lorsqu'il est chargé

Vous aurez la syntaxe JSON en surbrillance dans le format que vous avez défini dans votre page. Voir ici pour un exemple . Donc si vous aviez un bloc de code comme celui-ci :

<code class="prettyprint">
    var jsonObj = {
        "height" : 6.2,
        "width" : 7.3,
        "length" : 9.1,
        "color" : {
            "r" : 255,
            "g" : 200,
            "b" : 10
        }
    }
</code>

Cela ressemblerait à ceci :

var jsonObj = {
    "height" : 6.2,
    "width" : 7.3,
    "length" : 9.1,
    "color" : {
        "r" : 255,
        "g" : 200,
        "b" : 10
    }
}

Cela n'aide pas avec l'indentation, mais la autres réponses semblent s'attaquer à ce problème.

1 votes

Maintenant que tous les dépôts de Google Code sont gelés, nous devrions diriger les nouveaux utilisateurs directement vers le nouveau dépôt GitHub : https://github.com/google/code-prettify

0 votes

Comment faire pour que cela fonctionne dans le cadre d'un retour AJAX ? Le code n'est pas présent au chargement du corps, mais seulement après l'appel ajax.

0 votes

@toddmo vous devriez pouvoir suivre mes 3 étapes dans la fonction du gestionnaire de réponse pour le retour AJAX. Ainsi, le gestionnaire appellera prettyPrint au lieu de la méthode body onLoad. Je pense que cela devrait fonctionner.

41voto

Peter Örneholm Points 2245

Je pense que tu voulais dire quelque chose comme ça : Visualisation JSON

Je ne sais pas si vous pouvez l'utiliser, mais vous pouvez demander à l'auteur.

0 votes

Irréel ! Super ! Je ne sais pas quoi dire... Merci beaucoup.

0 votes

Vraiment un bel outil !

29voto

warfares Points 360

Quelque chose comme ça ?

pretty-json

https://github.com/warfares/pretty-json

échantillon en direct :

http://warfares.github.com/pretty-json/

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