Je JSON.stringify
un objet json par
result = JSON.stringify(message, my_json, 2)
Le 2
dans l'argument ci-dessus est supposé imprimer le résultat. C'est ce que je fais si je fais quelque chose comme alert(result)
. Cependant, je veux envoyer ceci à l'utilisateur en l'ajoutant à l'intérieur d'un div. Lorsque je le fais, je ne vois plus qu’une seule ligne. (Je ne pense pas que cela fonctionne car les sauts et les espaces ne sont pas interprétés comme du code HTML?)
{ "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 }
Existe-t-il un moyen d’afficher le résultat de JSON.stringify
sur une div de manière assez élégante?
Veuillez utiliser une balise <pre>
démo: http://jsfiddle.net/K83cK/
var data = {
"data": {
"x": "1",
"y": "1",
"url": "http://url.com"
},
"event": "start",
"show": 1,
"id": 50
}
document.getElementById("json").innerHTML = JSON.stringify(data, undefined, 2);
<pre id="json"></pre>
Assurez-vous que la sortie JSON est dans une balise <pre>
.
Divulgation complète Je suis l'auteur de ce paquet, mais un autre moyen de générer en lecture les objets JSON ou JavaScript de manière lisible, c'est-à-dire pouvoir sauter des parties, les réduire, etc. est nodedump
, https://github.com/ragamufin/nodedump
Si c'est vraiment pour un utilisateur, mieux que de simplement sortir du texte, vous pouvez utiliser une bibliothèque comme celle-ci https://github.com/padolsey/prettyprint.js pour la sortir sous forme de tableau HTML.
Considérez vos retours d'API REST:
{"Intent":{"Command":"search","SubIntent":null}}
Vous pouvez ensuite procéder comme suit pour l’imprimer au format Nice:
<pre id="ciResponseText">Output will de displayed here.</pre>
var ciResponseText = document.getElementById('ciResponseText');
var obj = JSON.parse(http.response);
ciResponseText.innerHTML = JSON.stringify(obj, undefined, 2);
Si votre balise <pre>
montre une seule ligne de JSON parce que c'est ainsi que la chaîne est déjà fournie (via une API ou une fonction/page hors de votre contrôle), vous pouvez la reformater comme ceci:
HTML:
<pre id="json">{"some":"JSON string"}</pre>
JavaScript:
(function() {
var element = document.getElementById("json");
var obj = JSON.parse(element.innerText);
element.innerHTML = JSON.stringify(obj, undefined, 2);
})();
ou jQuery:
$(formatJson);
function formatJson() {
var element = $("#json");
var obj = JSON.parse(element.text());
element.html(JSON.stringify(obj, undefined, 2));
}
imprimer l'état d'un composant avec JSX
render() {
return (
<div>
<h1>Adopt Me!</h1>
<pre>
<code>{JSON.stringify(this.state, null, 4)}</code>
</pre>
</div>
);
}
vous pouvez essayer ce dépôt: https://github.com/amelki/json-pretty-html
utiliser le style white-space: pre
la balise <pre>
modifie également le format du texte, ce qui peut être indésirable.
Ma proposition est basée sur:
var x = { "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 };
document.querySelector('#newquote').innerHTML = JSON.stringify(x, null, 6)
.replace(/\n( *)/g, function (match, p1) {
return '<br>' + ' '.repeat(p1.length);
});
<div id="newquote"></div>