Javascript 从JSON自动生成HTML

Javascript 从JSON自动生成HTML,javascript,html,json,templates,Javascript,Html,Json,Templates,我正在开发一个模板系统。我想作为一个普通用户,您可以创建一个。json文件,系统将根据该文件自动生成html。 我完全不知道该怎么做。也许我可以创建一个遍历所有对象的递归循环,然后。。。。(我迷路了) JSON的外观示例: 生成的HTML应该是什么样子:。可能有点晚了,我本来打算做一些类似的事情,遇到了这个线程,但是有一些代码,回调函数是从一个XHR对象调用的,该对象从当前静态文件“response.json”获取数据 JSON: jQote2是一个优秀的javascript模板插件,至少应该是

我正在开发一个模板系统。我想作为一个普通用户,您可以创建一个。json文件,系统将根据该文件自动生成html。 我完全不知道该怎么做。也许我可以创建一个遍历所有对象的递归循环,然后。。。。(我迷路了)

JSON的外观示例:


生成的HTML应该是什么样子:。

可能有点晚了,我本来打算做一些类似的事情,遇到了这个线程,但是有一些代码,回调函数是从一个XHR对象调用的,该对象从当前静态文件“response.json”获取数据

JSON:


jQote2是一个优秀的javascript模板插件,至少应该是一个好的基准。它以一种非常方便的方式将JSON解析为HTML模板。

“json2html是一个开源jQuery插件,它依赖JSON转换将JSON对象转换为HTML。”

@topherg

  • 在createElement之后直接将obj绑定到父对象会更快

  • 当您谈到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);
    }
    
    if(object.children.constructor==数组){
    
    对于(var i=0;i我为自己的项目做了一个简单的尝试,通过JSON动态生成html内容。您可以在这里尝试。欢迎您使用fork,因为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'}]
      }
    
    };
    

    作为一个用户,我宁愿写HTML也不愿写json来描述网页的外观和内容。另外,你有没有想过如何处理样式?有没有理由不能使用jQuery及其模板插件?你真的在json和HTML之间节省了很多钱?标签
    字段集
    似乎暗示您的普通用户必须对HTML元素有一些了解。我不明白您为什么要生成与所需格式不同的格式。JSON适合向多个用户发送数据(通常是异构的)客户端。但如果客户端需要HTML,只需发送HTML。您也可以将数据格式化为XML,然后使用XSLT将其转换为HTML(最好在服务器上,但也可以在客户端上)或其他用于不同客户端的标记。这一点很好。我确信,我将使用XML或HTML。谢谢大家;)这似乎是合乎逻辑的,我想他只是想自己建立一个。这也是我得到的印象。不过我还是会先使用一些现有的解决方案来看看好的/坏的部分。然后再看一些更好的解决方案的代码,特别是如果对如何实现类似的系统有点迷茫的话。我这样做就像是在stackOverFlow上问一个问题。这是纯粹的javascript。这太棒了。简单又小——非常好。谢谢!
    
    if(object.children.constructor===Array){
      for(var i=0;i<object.children.length;i++)
         createElementsFromJSON(object.children[i],obj);
    }else{
       createElementsFromJSON(object.children,obj);
    }
    
    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'}]
      }
    
    };