猿问

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

我有这个模板:


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?


DIEA
浏览 135回答 1
1回答

芜湖不芜

你不应该使用 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"]}
随时随地看视频慕课网APP

相关分类

Go
我要回答