[英]Ouput json to http.ResponseWriter with template
我有这个模板:
var ListTemplate = `
{
"resources": [
{{ StringsJoin . ", " }}
]
}
`
呈现为:
JoinFunc := template.FuncMap{"StringsJoin": strings.Join}
tmpl := template.Must(template.New("").Funcs(JoinFunc).Parse(ListTemplate))
如果我将其发送到http.ResponseWriter,则输出文本将被转义。
var list []string
tmpl.Execute(w, list)
我怎么能这样写一个json?
您不应该使用Go的模板引擎( text/template
和html/template
text/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"]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.