Go 中使用字串拆分自訂解組
在處理JSON 資料時,經常需要針對特定的情況轉換或自訂解組過程資料類型。在本例中,我們希望在解組期間將包含逗號分隔值的 JSON 字串拆分為 []string 切片。
為了實現此目的,讓我們為[]string 類型實作一個自訂解組器:
<code class="go">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 }</code>
這個自訂解組器將原始JSON 資料作為輸入,並透過在指定的分隔符號(本例中為“-”)上拆分它來將其轉換為字串切片。
在我們的原始結構中,我們現在可以為主題字段使用此自訂類型:
<code class="go">type Student struct { StudentNumber int `json:"student_number"` Name string `json:"name"` Subjects strslice `json:"subjects"` }</code>
這允許我們將JSON 資料直接解組到結構中,主題字段自動拆分為單獨的字串:
<code class="go">json := `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}` var s Student if err := json.Unmarshal([]byte(json), &s); err != nil { panic(err) } fmt.Println(s) // Output: {1234567 John Doe [Chemistry Maths History Geography]}</code>
以上是如何在 Go 中使用字串拆分自訂 JSON 解組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!