Go 中使用字串拆分自訂解組
將JSON 解組為Go 結構時,預設行為是將JSON 值轉換為對應的結構字段。但是,在某些情況下,您可能需要在解組過程中執行自訂轉換。
考慮一個 JSON 對象,其中「主題」表示為逗號分隔的字串。要將其解組到 Go 結構中,並將「subjects」作為字串切片,您需要在解組過程中拆分字串。
一種方法是使用 json 為「subjects」欄位實作自訂解組器。解組器介面。以下是實現此目的的方法:
type SubjectSlice []string // UnmarshalJSON implements custom unmarshalling for SubjectSlice. func (s *SubjectSlice) UnmarshalJSON(data []byte) error { var subjects string err := json.Unmarshal(data, &subjects) if err != nil { return err } *s = strings.Split(subjects, "-") return nil }
在結構定義中,對「subjects」欄位使用自訂切片類型:
type Student struct { StudentNumber int Name string Subjects SubjectSlice }
當您使用此自訂解組JSON 時解組器時,「subjects」欄位將自動拆分為字串切片。
例如,考慮以下JSON:
{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}
使用自訂解組器將其解組到Student 結構中會導致:
s := Student{ StudentNumber: 1234567, Name: "John Doe", Subjects: []string{"Chemistry", "Maths", "History", "Geography"}, }
透過實作自定義解組器,您可以在解組期間處理複雜的資料轉換,使其成為處理JSON 中的自訂資料結構的強大工具。
以上是如何使用自訂解組將逗號分隔的字串解組到 Go 中的切片中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!