如何在freemarker中输出json文档的整个节点

Posted

技术标签:

【中文标题】如何在freemarker中输出json文档的整个节点【英文标题】:How can I output an entire node of a json document in freemarker 【发布时间】:2015-10-09 23:43:57 【问题描述】:

我正在尝试使用 freemarker 提取 JSON 文档的部分内容并将它们输出到新文档中。我一直遇到freemarker抱怨的问题:

严重:执行 FreeMarker 模板时出错 FreeMarker 模板错误: 对于 "$..." 内容:需要一个字符串或可自动转换为字符串(数字、日期或布尔值)的内容,但这已评估为扩展哈希(包装器:f.c.HashLiteral$SequenceHash): ==> m.name [在模板“testjson.ftl”中第 8 行第 15 列]

当元素 m.name 计算为字符串时,我的模板工作正常,但我想用它来提取整个节点。模板是:

<#assign m = doc?eval>
<html>
<head>
  <title>Test JSON</title>
</head>
<body>
    <h1>$m.name</h1>
</body>
</html>

这适用于简单的结构:


    "name" : "joe",
    "number": "123-456-7890"

但不是一个复杂的:


    "name" : 
           
            "first" : "joe",
            "last" : "developer"
        ,
    "number":"123-456-7890"

是否可以轻松提取和输出整个节点?

谢谢,

伊恩

【问题讨论】:

【参考方案1】:

不,目前(2.3.23)在 FTL 中没有开箱即用的 JSON 支持(除了 JSON 转义)。当然,可以编写一个“toJSON”TemplateMethodModelEx 来执行此操作。

【讨论】:

以上是关于如何在freemarker中输出json文档的整个节点的主要内容,如果未能解决你的问题,请参考以下文章

freemarker如何遍历模板中所有变量

Freemarker:将网页内容转换为 Json 对象

如何在freemarker中转义json字符串

将 freemarker 对象呈现为 JSON 的最简单方法是啥?

如何在 Freemarker 中输出 $expression 而不会被解释?

使用Freemarker导出Word文档(包含图片)代码实现及总结