我有这个模板:var ListTemplate = `{ "resources": [ {{ StringsJoin . ", " }} ] }`呈现:JoinFunc := template.FuncMap{"StringsJoin": strings.Join}tmpl := template.Must(template.New("").Funcs(JoinFunc).Parse(ListTemplate))如果我将它发送到 http.ResponseWriter 输出文本被转义。var list []stringtmpl.Execute(w, list)我怎么能这样写一个json?
1 回答
芜湖不芜
TA贡献1796条经验 获得超7个赞
你不应该使用 Go 的模板引擎(既不是text/template
也不是html/template
)来生成 JSON 输出,因为模板引擎不知道 JSON 语法和规则(转义)。
而是使用encoding/json
包生成 JSON。您可以使用json.Encoder
将响应直接写入/流式传输到io.Writer
,例如http.ResponseWriter
。
例子:
type Output struct {
Resources []string `json:"resources"`
}
obj := Output{
Resources: []string{"r1", "r2"},
}
enc := json.NewEncoder(w)
if err := enc.Encode(obj); err != nil {
// Handle error
fmt.Println(err)
}
输出(在Go Playground上尝试):
{"resources":["r1","r2"]}
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消