【问题标题】:HTML::Template PerlHTML::模板 Perl
【发布时间】:2012-02-11 11:48:24
【问题描述】:

在 perl 中是否有一个类似于 HTml::Template 的包,它接受一个 JSON 对象并将其映射到一个 HTML 模板文件?我正在使用 HTML::Template 构建一个 Web 应用程序,并且将从 Web 服务 API 接收 JSOn,如果我可以将此 JSOn 模板化为 HTML 而不是按照 HTML::Template 要求的确切方式进行操作,事情就会变得简单。

【问题讨论】:

    标签: html json perl


    【解决方案1】:

    HTML::Template 只接受一个由字符串、散列和数组组成的数据结构。 JSON 直接映射到它。

    $template->param(myData => JSON::Any->new->decode($json_string));
    

    【讨论】:

    • 好的,如果我想打印 JSON 对象的深层属性,HTML 模板代码会是什么样子?
    • 这适用于简单的 1 或 2 级 JSON 对象,但是对于复杂的 JSON 数据结构,使用 TMPL_LOOP 不是最佳选择。它会导致繁琐和丑陋的 HTML 模板代码。我正在寻找可以执行 并为该用户访问包含用户地址的 JSON 对象,然后直接访问街道。它要求我知道 JSON 对象的结构,但我知道。
    【解决方案2】:

    HTML::Template 是一个相当“简单”的模板引擎 - 我使用引号是因为它的简单性让您可以在来自 Model View Controller 架构的 view 部分中做任何您需要的事情。

    但是,您不能在 HTML::Template 中执行任意 perl 代码。

    另外,由于在JSON 中您可能拥有非常复杂的数据结构,我怀疑是否有任何合适的方法可以在您的模板中直接使用JSON

    我认为可能的唯一解决方案是让您使用 Perl 脚本来解析 JSON,创建一些“对象”并将它们传递给您的模板。你已经有了那个 perl 脚本 - 就是实例化你的 HTML::Template 对象的那个。

    【讨论】:

      【解决方案3】:

      好的,有点晚了,但是: HTML::Template 总是需要散列数组的散列等等。 并且您无法浏览参数存储。 如果你想这样做,你可以试试 HTML::Template::Compiled 它允许你这样做。

      <tmpl_var some_hash.key.another_key[23] >
      

      或使用其他分隔符:

      [%= some_hash.key.another_key[23] %]
      

      但请注意模块与 HTML::Template 的文档差异。

      因此,您将 JSON 字符串解码为数据结构并将其传递给模板,然后您就可以访问结构深处某处的所有值。

      【讨论】:

        猜你喜欢
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        相关资源
        最近更新 更多