簡體   English   中英

從Groovy模板“很好地”訪問Json

[英]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()非常不方便。 您知道替代品嗎?

請記住,以下不是我要找的答案:

  • 將json發送到客戶端並使用javascript完成
  • 用控制器中的代碼來完成
  • 使用%{}%標簽內的代碼來完成
  • 在控制器中將json對象轉換為java對象,並將其傳遞給模板(盡管這是我最喜歡的替代方法)

編輯:解決方案

這是應用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM