猿问

在 Golang 中使用字符串拆分的自定义解组

我有以下 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(),但到目前为止还没有成功。


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


MMTTMM
浏览 108回答 1
1回答

潇湘沐

最简单的方法是定义您自己的字符串切片类型并json.Unmarshaler在其上实现:type strslice []stringfunc (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"}`{1234567 John Doe [Chemistry Maths History Geography]} <nil>
随时随地看视频慕课网APP

相关分类

Go
我要回答