我有這個模板: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 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消