2015-02-10 61 views
5

目標是從用Scala編寫的Model/ViewModel轉換爲可引導到視圖模板的原始JSON,以避免在頁面加載後發出對JSON數據的請求。將JSON數據引導到Scala PlayFramework模板

和實例我已經和玩弄,但我沒有多少運氣:

@(todos: play.api.libs.json.JsValue) 
@import play.api.libs.json.Json 

<html> 
    <head>...</head> 
    <body>...</body> 

    <script> 
     var todos = JSON.parse(' @Json.stringify(todos) '); 
    </script> 
</html> 

基本上它吐出大量引用文字,效果:

[{&quot;id&quot;:&quot;:&quot;294858e2-c9eb-4f50-9eac-47b257573d83&quot;}] 

與Google或PlayFramework文檔沒有太大的運氣,所以我想要一些幫助。

+0

什麼實際上不在這裏工作? – Mikesname 2015-02-10 23:17:33

+1

默認情況下,模板引擎會HTML引用您的數據,因此請嘗試類似'@Html(Json.stringify(todos))'來逐字呈現它。看看HTML輸出來驗證。您可能還需要將'todos'參數的'JsValue'類型完全限定爲'play.api.libs.json.JsValue',因爲AFAIK它不是默認的模板導入。 – Mikesname 2015-02-10 23:34:55

+0

@Mikesname你正確地猜到了這個問題。而你使用'@ Html'的建議完美運作。如果您可以發佈您的建議作爲答案,我會繼續接受它。 – 2015-02-10 23:42:33

回答

8

Play模板引擎會將任何呈現給HTML的字符串轉義出來,這將徹底破壞您的JSON。

要逐字輸出,請按照的描述輸入here