【问题标题】:How to print JSON on golang template?如何在 golang 模板上打印 JSON?
【发布时间】:2025-12-13 23:30:01
【问题描述】:

我在客户端需要一个对象,所以我使用 json.marshal 将其转换为 JSON 并将其打印到模板中。该对象被打印为转义的 JSON 字符串。

我希望它是var arr=["o1","o2"],但它是var arr="[\"o1\",\"o2\"]"

我知道我可以在客户端进行 JSON.parse,但这是唯一的方法吗?

这是我在模板中打印它的方式:

{{ marshal .Arr }}

这是我的元帅功能:

"marshal": func(v interface {}) string {
  a, _ := json.Marshal(v)
  return string(a)
},

【问题讨论】:

    标签: go go-templates


    【解决方案1】:

    在 JS 上下文中,普通字符串总是被转义。我应该在打印之前转换为template.JS 类型。

    参考: http://golang.org/pkg/html/template/#JS

    这是新的元帅功能:

    "marshal": func(v interface {}) template.JS {
      a, _ := json.Marshal(v)
      return template.JS(a)
    },
    

    【讨论】:

    • 通俗一点:encodedValue := json.Marshal(complexValue); replaceableValue := template.JS(encodedValue)