//前端传到后端的模板json格式是`{"uid":"{{tojson .uid}}"}`,这样前端可以用json来显示给用户,但后端用模板替换的时候就会带双引号,如果赋值复杂类型就更麻烦,用以下方法可以解决,python 的jinja2也可以实现类似的功能,并且jinja2提供tojson函数,所以python不需要定义自己的函数
package main
import (
"bytes"
"encoding/json"
fmt "fmt"
"text/template"
)
var m_d547a4e3_params = make(map[string]interface{})
func doTemplate(body string, m map[string]interface{}) string {
funcs := template.FuncMap{
"tojson": func(v interface{}) string {
a, _ := json.Marshal(v)
return string(a)
},
}
t := template.New("test").Funcs(funcs)
t.Delims("\"{{", "}}\"")
t.Parse(body)
var tpl bytes.Buffer
t.Execute(&tpl, m)
return tpl.String()
}
func main() {
var arr = [...]string{"wq", "21"}
fmt.Println(arr[0])
var i int = 2
fmt.Println(i)
m_d547a4e3_params["uid"] = "{\"wq\",\"21\"}"
m_d547a4e3_params["uid"] = "10"
m_d547a4e3_params["uid"] = 10
m_d547a4e3_params["uid"] = arr
fmt.Println(doTemplate(`{"uid":"{{tojson .uid}}"}`, m_d547a4e3_params))
}
/*python版本
import os, jinja2
json = u'''{
"a":"{{ age | tojson}}"
}'''
_t = jinja2.Template(json, trim_blocks=True, variable_start_string='"{{', variable_end_string='}}"')
_text = _t.render(age={"a":1})
_text = _text.encode('utf-8')
print(_text)
*/