возможно, немного поздно, я собирался сделать что-то подобное и наткнулся на этот поток, но у меня есть некоторый код, функция обратного вызова вызывается из объекта 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",
},
]
}