2012-01-16 70 views
1

非法入境者有在Perl類似於HTML包::模板,需要一個JSON對象,並將其映射到一個HTML模板文件?我正在使用HTML :: Template構建Web應用程序,並且將從Web服務API接收JSOn,如果我可以將此JSOn模板化爲HTML,而不是以HTML :: Template所需的方式進行操作,事情會變得簡單。HTML ::模板的Perl

回答

6

HTML ::模板只是需要的數據結構組成的字符串,散列和數組。 JSON直接映射到那個。

$template->param(myData => JSON::Any->new->decode($json_string)); 
+0

好的,如果我想打印JSON對象的深層屬性,那麼HTML模板代碼會是什麼樣子? – MadHacker 2012-01-16 16:30:46

+0

看那[該文檔的環形部分(https://metacpan.org/module/HTML::Template#TMPL_LOOP) – Quentin 2012-01-16 16:34:42

+0

這適用於一個簡單的1或2級JSON對象,但是使用TMPL_LOOP是次優複雜的JSON數據結構。它導致繁瑣和醜陋的HTML模板代碼。我正在尋找一些我可以做的並訪問該用戶的JSON對象,該對象直接包含用戶的地址。它需要我知道JSON對象的結構,但我知道。 – MadHacker 2012-01-16 17:59:14

1

HTML::Template是一個相當「簡單」的模板引擎 - 我使用引號是因爲它的簡單讓你做任何你在view部分來自Model View Controller架構需要的。

但是,你不能在裏面HTML::Template執行任意Perl代碼。

另外,由於在JSON中可能有非常複雜的數據結構,所以我懷疑在模板中直接使用JSON有什麼合適的方法。

我認爲唯一可行的解​​決方案是讓您使用Perl腳本來解析JSON,創建一些「對象」並將它們傳遞給您的模板。你已經有了這個perl腳本 - 就是實例化你的對象的那個腳本。

1

ok了,有點晚了,但是: HTML ::模板總是想哈希的數組等的哈希值。 ,您無法導航參數存儲。 如果你想這樣做,你可以嘗試HTML :: Template :: Compiled,它可以讓你做到這一點。

<tmpl_var some_hash.key.another_key[23] > 

或用作爲選擇的分隔符:

[%= some_hash.key.another_key[23] %] 

但要注意模塊與HTML ::模板的文檔的差異。

所以,你的JSON字符串解碼爲數據結構,並把它傳遞給模板,然後你可以深刻的地方訪問結構中的所有值。