gpt4 book ai didi

templates - 从json添加到数组并在模板中执行数据

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:37 24 4
gpt4 key购买 nike

我有个小问题!

如何从 json 添加到数组数据并执行模板。简单的。但不工作!

package main

import (
"fmt"
"html/template"
"os"
"encoding/json"
)

type Person struct {
Name string
Jobs []*Job
}

type Job struct {
Employer string
Role string
}

const templ = `The name is {{.Name}}.

{{with .Jobs}}
{{range .}}
An employer is {{.Employer}}
and the role is {{.Role}}
{{end}}
{{end}}
`

func main() {
job1 := Job{Employer: "Monash", Role: "Honorary"}
job2 := Job{Employer: "Box Hill", Role: "Head of HE"}

byt := []byte(`{"num":6.13,"Jobs":[{"Employer": "test1", "Role": "test1"},{"Employer": "test2", "Role": "test2"}]}`)

var dat map[string]interface{}

if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
fmt.Println(dat)




// HOW ADD FROM ARRAY 'dat' TO STRUCT 'Job'
// LINE 54




person := Person{
Name: "jan",
Jobs: []*Job{&job1, &job2},
}

t := template.New("Person template")
t, err := t.Parse(templ)
checkError(err)

err = t.Execute(os.Stdout, person)
checkError(err)
}





func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
os.Exit(1)
}
}

在这里你可以播放/测试代码:http://play.golang.org/p/AB8hGLrLRy

注意第 46 行。

非常感谢!

最佳答案

首先,您的 dat 变量类型不正确。你应该有这样的东西:

dat := struct {
Jobs []*Job
}

这样,当将您的 JSON 字符串解码为 dat 时,Jobs 键将填充一个由您初始化的 *Job 数组数据的数组。我使用的是匿名结构,但您也可以使用命名结构(有关示例,请参阅@RoninDev 的评论)。

然后,将它们添加到 person 数组中,类似这样:

person.Jobs = append(person.Jobs, jobs.Jobs...)

注意 ... 运算符,它使用数组作为可变参数。

您可以在这个 playground 上看到完整的工作代码.

关于templates - 从json添加到数组并在模板中执行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32268954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com