假设我有这个 JSON 结构:
{
"name":"repo",
"tags":["1.0","2.0","3.0"]
}
我想将它映射到这个 Go 结构:
type Repository struct {
Name string `json:"name"`
Tags []struct {
Tag string `json:"??"`
Sha256 string
}
}
如何将“标签”数组 JSON 值链接到结构字段?
编辑:想法是像这样访问标签数组值
repository.Tags[0].Tag
.
最佳答案
在标签类型上实现 json.Unmarshaler:
package main
import (
"encoding/json"
"log"
)
type Repository struct {
Name string
Tags []Tag
}
type Tag struct {
Tag string
Sha256 string
}
func (t *Tag) UnmarshalJSON(b []byte) error {
var s string
if err := json.Unmarshal(b, &s); err != nil {
return err
}
t.Tag = s
return nil
}
func main() {
b := []byte(`{ "name":"repo", "tags":["1.0","2.0","3.0"] }`)
var r Repository
err := json.Unmarshal(b, &r)
if err != nil {
log.Fatal(err)
}
log.Printf("%+v\n", r)
}
在 Playground 上试试:https://play.golang.org/p/ExwWhis0w0V
编码回 JSON 作为练习留给读者。
关于json - 将 JSON 数组值映射到结构特定变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49293842/