HTML脚本标记中的Golang JSON

HTML脚本标记中的Golang JSON,html,json,go,Html,Json,Go,我正在尝试使用Go模板在Go中创建html电子邮件内容。 在html电子邮件内容中,我需要存储JSON数据,如下所示: <script type ="application/ld+json"> [ { JSON Object}, { JSON Object} ] </script> [ {JSON Object}, {JSON对象} ] 不幸的是,我不知道如何使用go lang实现这一点。这是我迄今为止尝试过的: tr,

我正在尝试使用Go模板在Go中创建html电子邮件内容。 在html电子邮件内容中,我需要存储JSON数据,如下所示:

<script type ="application/ld+json">
   [
   { JSON Object},
   { JSON Object}
   ]
</script>

[
{JSON Object},
{JSON对象}
]
不幸的是,我不知道如何使用go lang实现这一点。这是我迄今为止尝试过的:

tr, err := template.New("tr").Parse("<html><body><script type=\"application/ld+json\">{{.}}</script></body></html>")
if err != nil {
    log.Fatal(err)
}

var doc bytes.Buffer
err = tr.Execute(&doc, template.HTML(emailModel))
if err != nil {
    log.Fatal(err)
}

emailHtmlContent := doc.String()

fmt.Println(emailHtmlContent)
tr,err:=template.New(“tr”).Parse(“{.}”)
如果出错!=零{
log.Fatal(错误)
}
var doc bytes.Buffer
err=tr.Execute(&doc,template.HTML(emailModel))
如果出错!=零{
log.Fatal(错误)
}
emailHtmlContent:=doc.String()
fmt.Println(emailHtmlContent)
执行此操作时,JSON存储在字符串的“”双引号中。如果我使用
标记,则不会显示双引号,但我需要将JSON存储在脚本标记中。
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "log"
    "text/template"
)

type Student struct {
    Id   string `json:"id"`
    Name string `json:"name"`
}

func main() {
    emailModel, err := json.Marshal(Student{Id: "m", Name: "k"})
    if err != nil {
        log.Fatal(err)
    }
    tr, err := template.New("tr").Parse("<html><body><script type=\"application/ld+json\">{{.}}</script></body></html>")
    if err != nil {
        log.Fatal(err)
    }

    var doc bytes.Buffer
    err = tr.Execute(&doc, string(emailModel))
    if err != nil {
        log.Fatal(err)
    }

    emailHtmlContent := doc.String()

    fmt.Println(emailHtmlContent)
}
有办法做到这一点吗


谢谢你,阿尔雷德

您可以使用
文本/模板
,它不会转义字符串

主程序包
进口(
“字节”
“编码/json”
“fmt”
“日志”
“文本/模板”
)
类型学生结构{
Id字符串`json:“Id”`
名称字符串`json:“名称”`
}
func main(){
emailModel,err:=json.Marshal(学生{Id:“m”,名字:“k”})
如果错误!=零{
log.Fatal(错误)
}
tr,err:=template.New(“tr”).Parse(“{.}”)
如果错误!=零{
log.Fatal(错误)
}
var doc bytes.Buffer
err=tr.Execute(&doc,string(emailModel))
如果错误!=零{
log.Fatal(错误)
}
emailHtmlContent:=doc.String()
fmt.Println(emailHtmlContent)
}

您可以使用
文本/模板
,它不会转义字符串

主程序包
进口(
“字节”
“编码/json”
“fmt”
“日志”
“文本/模板”
)
类型学生结构{
Id字符串`json:“Id”`
名称字符串`json:“名称”`
}
func main(){
emailModel,err:=json.Marshal(学生{Id:“m”,名字:“k”})
如果错误!=零{
log.Fatal(错误)
}
tr,err:=template.New(“tr”).Parse(“{.}”)
如果错误!=零{
log.Fatal(错误)
}
var doc bytes.Buffer
err=tr.Execute(&doc,string(emailModel))
如果错误!=零{
log.Fatal(错误)
}
emailHtmlContent:=doc.String()
fmt.Println(emailHtmlContent)
}

Try而不是
template.HTML
。示例:Try而不是
template.HTML
。示例:很好。谢谢正是我所期待的。谢谢正是我想要的