私はJSON.stringify
によってjsonオブジェクトを
result = JSON.stringify(message, my_json, 2)
上記の引数の2
は、結果をきれいに表示することになっています。 alert(result)
のようなことをすると、これが行われます。ただし、これをdiv内に追加してユーザーに出力したいと思います。これを行うと、1行だけが表示されます。 (ブレークとスペースがhtmlとして解釈されていないため、機能しているとは思わないでしょうか?)
{ "data": { "x": "1", "y": "1", "url": "http://url.com" }, "event": "start", "show": 1, "id": 50 }
JSON.stringify
の結果をかなりきれいな方法でdivに出力する方法はありますか?
<pre>
タグを使用してください
デモ: 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>
JSON出力が<pre>
タグにあることを確認してください。
私はこのパッケージの作成者ですが、JSONまたはJavaScriptオブジェクトを読みやすい方法で出力する別の方法は、パーツをスキップしたり、折りたたんだりできるなど、完全なものですnodedump
、 https://github.com/ragamufin/nodedump
これが実際にユーザー向けの場合は、テキストを出力するだけでなく、次のようなライブラリを使用できます https://github.com/padolsey/prettyprint.js を使用して、HTMLテーブルとして出力します。
REST APIが返すことを考慮してください:
{"Intent":{"Command":"search","SubIntent":null}}
その後、次の手順を実行して、ナイス形式で印刷できます。
<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);
<pre>
タグがJSONの単一行を表示している場合は、その方法で文字列が既に提供されているため(APIまたは制御外の関数/ページを介して)、次のように再フォーマットできます。
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);
})();
またはjQuery:
$(formatJson);
function formatJson() {
var element = $("#json");
var obj = JSON.parse(element.text());
element.html(JSON.stringify(obj, undefined, 2));
}
スタイルwhite-space: pre
を使用すると、<pre>
タグは、望ましくないテキスト形式も変更します。
私の提案は以下に基づいています:
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>
jSXを使用してコンポーネントの状態を出力する
render() {
return (
<div>
<h1>Adopt Me!</h1>
<pre>
<code>{JSON.stringify(this.state, null, 4)}</code>
</pre>
</div>
);
}
このリポジトリを試すことができます: https://github.com/amelki/json-pretty-html