我有一個groovy模板從控制器接收JsonArray(gson)。我想要做的是生成一些HTML,其中包含該數組中包含的JsonObjects的一些信息。像這樣(簡化爲清楚起見):從常規模板訪問Json「很好」
<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()所有的時間。你知道另一個選擇嗎?
請記住下面的不是我要找的答案:
- 用JavaScript
- 發送JSON到客戶端,並做到在控制器的代碼做
- 與%{}標籤內的代碼
- JSON對象轉換爲Java對象在控制器和它傳遞給模板做(這是雖然我最喜歡的替代)
編輯:解
這是事情的結束將塞巴斯蒂安的解決方案後,尋找:
控制器:
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>
只是好奇一個,爲什麼JSON?爲什麼不只是Java對象? – biesior
,因爲json來自我對控制器中的不同API的請求,並且我認爲groovy可能有一些很酷的方式來處理這些,所以我不需要將json對象轉換爲java對象在控制器中並將java對象傳遞給模板。 – palako
我會重寫它到控制器上的Java對象。 – biesior