gpt4 book ai didi

json - 在 Golang 中使用字符串拆分的自定义解码

转载 作者:IT王子 更新时间:2023-10-29 01:49:55 24 4
gpt4 key购买 nike

我有以下 JSON

{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}

我想将它解码到一个结构中,其中一个项目(主题)按“-”拆分为 []string

type Student struct {
StudentNumber int `json:"student_number"`
Name string `json:"name"`
Subjects []string
}

我已经尝试了几种不同的方法来通过使用 strings.Split() 的自定义解码来实现这一点,但到目前为止还没有成功。

有没有办法在解码过程中实现这一点?还是我需要简单地按原样解码并在之后进行转换?

最佳答案

最简单的方法是定义您自己的字符串 slice 类型并在其上实现 json.Unmarshaler:

type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
}
*ss = strings.Split(s, "-")
return nil
}

并在你的结构中使用它:

type Student struct {
StudentNumber int `json:"student_number"`
Name string `json:"name"`
Subjects strslice `json:"subjects"`
}

然后它会起作用:

func main() {
var s Student
err := json.Unmarshal([]byte(src), &s)
fmt.Println(s, err)
}

const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`

输出(在 Go Playground 上尝试):

{1234567 John Doe [Chemistry Maths History Geography]} <nil>

关于json - 在 Golang 中使用字符串拆分的自定义解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53186254/

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