Ответ 1
"json2html - это плагин jQuery с открытым исходным кодом, который использует преобразования JSON для преобразования объектов JSON в HTML.
Я работаю над системой шаблонов. Я полагаю, что в качестве обычного пользователя вы можете создать a. json, и на основе этого файла система автоматически генерирует html. Я довольно потерял, как подойти к нему. Возможно, я мог бы создать рекурсивный цикл, который проходит через все объекты, а затем.... (ну, я потерялся).
Пример того, как может выглядеть JSON: http://pastebin.com/cJ376fiF.
Как должен выглядеть сгенерированный HTML: http://pastebin.com/e4EytHm1.
"json2html - это плагин jQuery с открытым исходным кодом, который использует преобразования JSON для преобразования объектов JSON в HTML.
возможно, немного поздно, я собирался сделать что-то подобное и наткнулся на этот поток, но имел некоторый код, вызывающая функция вызывается из объекта XHR, который получает данные из текущего статического файла "response.json"
function callback(req)
{
var response = eval("("+req.responseText+")");
response = response.response;
createElementsFromJSON(response, document.body);
}
function createElementsFromJSON(json, parent)
{
for(var i in json)
{
var object = json[i];
var obj = document.createElement(object.element);
for(var tag in object)
if (tag!="children"&&tag!="element")
obj.setAttribute(tag, object[tag]);
parent.appendChild(obj);
if (typeof(object.children)=="object")
createElementsFromJSON(object.children, obj);
}
}
JSON:
{
"response":
[
{
"element":"div",
"id":"james",
"children":
[
{
"element":"h1",
"id":"bob",
"innerHTML":"bobs content",
},
{
"element":"h2",
"id":"rob",
"innerHTML":"robs content",
},
{
"element":"p",
"innerHTML":"some random text",
},
],
},
{
"element":"div",
"id":"alex",
"innerHTML":"this is a test message in a div box",
},
]
}
jQote2 - отличный плагин для шаблонов javascript, который должен быть по крайней мере хорошим эталоном. Он разбирает JSON в HTML-шаблонах очень удобным способом. http://aefxx.com/jquery-plugins/jqote2/
Я сделал скромную попытку для собственного проекта динамически генерировать html-контент через JSON. Здесь вы можете попробовать fiddle. Вы можете разблокировать его, так как формат JSON отличается.
Пример формата JSON будет выглядеть следующим образом.
var innerhtml = {
type: 'b',
content: ['This is BOLD text.', {
type: 'i',
content: ' Italics came from Italy? Its 35px and bold too.',
style: 'font-size:35px;'
}]
};
var htmlArr = {
type: 'div',
content: {
type: 'p',
content: ['Simple text with no formatting.', innerhtml, {type : 'img', src : '//www.gravatar.com/avatar/476914f28548ce41b3b7b2c5987720a9/?default=&s=64'}]
}
};
@topherg
Быстрее связывать obj с родителем раньше - сразу после createElement.
Когда вы приходите к object.children, вы должны проверить:
if(object.children.constructor===Array){
for(var i=0;i<object.children.length;i++)
createElementsFromJSON(object.children[i],obj);
}else{
createElementsFromJSON(object.children,obj);
}
В противном случае массив не будет проанализирован.
Чтобы создать элемент ONE DOM быстрее, чем innerHTML. Построение дерева DOM напрямую, занимает двойное время innerHTML. Даже innerHTML очень быстро, что разбор DOM также очень быстрый.