私は同じ問題に遭遇し、この小さなコードを書きました:
var pretty_json = function (ele, level, key) {
var cls = [];
if (key) {
cls.push('pretty-json-key');
ele = ele + ':';
} else if (typeof ele === 'number') {
cls.push('pretty-json-number');
} else if (typeof ele === 'boolean' && ele) {
cls.push('pretty-json-true');
} else if (typeof ele === 'boolean' && !ele) {
cls.push('pretty-json-false');
} else if (typeof ele === 'string') {
cls.push('pretty-json-string');
} else {
cls.push('pretty-json-null');
ele = '<i class="fa fa-ban"></i>';
}
var output = '<span ';
if (key) output += 'style="margin-left:' + (INDENT * level) + 'px" ';
output += ('class="' + cls.join(' ') + '">' + ele + '</span>');
console.log(output);
return output;
};
var eachRecursive = function (obj, level, s) {
for (var k in obj) {
if (!obj.hasOwnProperty(k)) continue;
if (typeof obj[k] == "object" && obj[k] !== null) {
s.push(pretty_json(k, level, true));
s.push("<br>");
eachRecursive(obj[k], level + 1, s);
} else {
s.push(pretty_json(k, level, true));
s.push(pretty_json(obj[k], level));
s.push("<br>");
}
}
};
var make_pretty_json = function (json_str) {
var json_obj = JSON.parse(json_str);
var output = [];
eachRecursive(json_obj, 1, output);
return output.join('');
};
http://jsfiddle.net/qwwqwwq/kefn7/37/
基本的な戦略は、オブジェクトを再帰的にトラバースし、各キーと値を適切なクラス (つまり、キー、数値、文字列、ブール値、null はすべて独自のクラスを持つ) の html タグに置き換えることです。インデントは、インライン スタイル属性を使用して、オブジェクト ツリーの深さに応じて設定されます。