[英]Access Json “nicely” from groovy templates
我有一個從控制器接收JsonArray(gson)的常規模板。 我想要做的是從該數組中包含的JsonObjects中生成一些HTML,其中填充了一些信息。 這樣的東西(為清晰起見,簡化了):
<ul>
#{list items: sections, as:'section'}
<li>${section.getAsJsonObject().get("title").getAsString()}
<ul>
#{list items: section.getAsJsonObject().getAsJsonArray("articles"), as:'article'}
<li><a href="${article.getAsJsonObject().get("url").getAsString()}">${article.getAsJsonObject().get("title").getAsString()}</a></li>
#{/list}
</ul>
</li>
#{/list}
</ul>
我發現必須一直執行整個getAsJsonWhatever()非常不方便。 您知道替代品嗎?
請記住,以下不是我要找的答案:
編輯:解決方案
這是應用Seb解決方案后的結果:
控制器:
Object json = slurper.parseText(response.getString());
render(json);
模板:
<ul>
#{list items: json.data.publication.sections, as:'section'}
<li>${section.title}
<ul>
#{list items: section.articles, as:'article'}
<li><a href="${article.url}">${article.title}</a></li>
#{/list}
</ul>
</li>
#{/list}
</ul>
我想您是從WS通話中獲取json的。
您可以使用String並使用groovy.json.JsonSlurper.parseText方法獲取結果,而不是使用默認的WS方法轉換json的結果,從而獲得可以在groovy模板中用作標准對象的groovy對象。
這是我在模板之一中所做的
%{
def slurper = new groovy.json.JsonSlurper()
def jsonResult = slurper.parseText(response.getString())
if (jsonResult.success) {
...
}
}%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.