为了账号安全,请及时绑定邮箱和手机立即绑定

使用模板将 json 输出到 http.ResponseWriter

使用模板将 json 输出到 http.ResponseWriter

Go
DIEA 2023-06-12 16:31:36
我有这个模板: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"]}


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信