17

我在客户端需要一个对象,所以我使用 json.marshal 将其转换为 JSON 并将其打印到模板中。该对象被打印为转义的 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)
},
4

1 回答 1

30

在 JS 上下文中,普通字符串总是被转义。我应该template.JS在打印之前转换为类型。

参考: http: //golang.org/pkg/html/template/#JS

这是新的元帅功能:

"marshal": func(v interface {}) template.JS {
  a, _ := json.Marshal(v)
  return template.JS(a)
},
于 2014-01-31T15:05:15.757 回答