2014-01-31 59 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)' –