Ответ 1
Я думаю, что вам нужно отображать данные на странице 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'). Но вы могли бы это за основу для разных типов форматирования.