2014-01-31 60 views
9

我需要客戶端的一個對象,所以我使用json.marshal將其轉換爲JSON並將其打印到模板中。該對象正在被打印爲轉義的JSON字符串。如何在golang模板上打印JSON?

我期待它是var arr=["o1","o2"]var arr="[\"o1\",\"o2\"]"

我知道我可以在JSON.parse客戶端,但是是唯一的出路?

這裏是如何我在打印模板:

{{ marshal .Arr }}

這裏是我的元帥功能:

"marshal": func(v interface {}) string { 
    a, _ := json.Marshal(v) 
    return string(a) 
}, 

回答

16

在JS背景下普通字符串總是被逃脫。在打印之前,我應該將其轉換爲template.JS類型。

價: http://golang.org/pkg/html/template/#JS

這是新的編組功能:

"marshal": func(v interface {}) template.JS { 
    a, _ := json.Marshal(v) 
    return template.JS(a) 
}, 
+0

有點更容易理解:'encodedValue:= json.Marshal(複數值); replaceableValue:= template.JS(encodedValue)' –