我有這個模板:var ListTemplate = `{ "resources": [ {{ StringsJoin . ", " }} ] }`呈現(xiàn):JoinFunc := template.FuncMap{"StringsJoin": strings.Join}tmpl := template.Must(template.New("").Funcs(JoinFunc).Parse(ListTemplate))如果我將它發(fā)送到 http.ResponseWriter 輸出文本被轉(zhuǎn)義。var list []stringtmpl.Execute(w, list)我怎么能這樣寫一個json?
1 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
你不應(yīng)該使用 Go 的模板引擎(既不是text/template
也不是html/template
)來生成 JSON 輸出,因為模板引擎不知道 JSON 語法和規(guī)則(轉(zhuǎn)義)。
而是使用encoding/json
包生成 JSON。您可以使用json.Encoder
將響應(yīng)直接寫入/流式傳輸?shù)?code>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 關(guān)注
- 161 瀏覽
添加回答
舉報
0/150
提交
取消