HTMLページにデータを表示するために必要なのはJSON.stringify
.
たとえば、JSON が次のように保存されているとします。
var jsonVar = {
text: "example",
number: 1
};
次に、これを文字列に変換するためにこれを行うだけです。
var jsonStr = JSON.stringify(jsonVar);
次に、HTML に直接挿入できます。たとえば、次のようになります。
document.body.innerHTML = jsonStr;
もちろん、おそらく をbody
介して他の要素に置き換えたいと思うでしょうgetElementById
。
質問の CSS 部分については、RegExp を使用して文字列化されたオブジェクトを操作してから、DOM に入れることができます。たとえば、このコード (デモンストレーション目的で JSFiddle にもあります) は、中括弧のインデントを処理する必要があります。
var jsonVar = {
text: "example",
number: 1,
obj: {
"more text": "another example"
},
obj2: {
"yet more text": "yet another example"
}
}, // THE RAW OBJECT
jsonStr = JSON.stringify(jsonVar), // THE OBJECT STRINGIFIED
regeStr = '', // A EMPTY STRING TO EVENTUALLY HOLD THE FORMATTED STRINGIFIED OBJECT
f = {
brace: 0
}; // AN OBJECT FOR TRACKING INCREMENTS/DECREMENTS,
// IN PARTICULAR CURLY BRACES (OTHER PROPERTIES COULD BE ADDED)
regeStr = jsonStr.replace(/({|}[,]*|[^{}:]+:[^{}:,]*[,{]*)/g, function (m, p1) {
var rtnFn = function() {
return '<div style="text-indent: ' + (f['brace'] * 20) + 'px;">' + p1 + '</div>';
},
rtnStr = 0;
if (p1.lastIndexOf('{') === (p1.length - 1)) {
rtnStr = rtnFn();
f['brace'] += 1;
} else if (p1.indexOf('}') === 0) {
f['brace'] -= 1;
rtnStr = rtnFn();
} else {
rtnStr = rtnFn();
}
return rtnStr;
});
document.body.innerHTML += regeStr; // appends the result to the body of the HTML document
このコードは、文字列内のオブジェクトのセクションを検索し、それらを div に分割するだけです (ただし、その HTML 部分は変更できます)。ただし、中括弧に遭遇するたびに、それが左中括弧か右中括弧かによって、インデントを増減します ( 'JSON.stringify' のスペース引数と同様の動作)。ただし、これをさまざまな種類の書式設定の基礎として使用できます。