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

时间:2015-07-20 18:14:01

标签: freemarker

我尝试使用freemarker提取JSON文档的一部分并将其输出到新文档中。我一直在讨论freemarker抱怨的问题:

  

SEVERE:执行FreeMarker模板时出错   FreeMarker模板错误:   对于" $ {...}" content:预期字符串或其他东西可自动转换为字符串(数字,日期或布尔值),但这已经计算为extended_hash(包装器: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 个答案:

答案 0 :(得分:0)

不,目前(2.3.23)开箱即用的FTL中没有JSON支持(除了JSON转义)。当然,可以写一个“toJSON”TemplateMethodModelEx来做到这一点。