首頁  >  文章  >  後端開發  >  如何使用自訂解組將逗號分隔的字串解組到 Go 中的切片中?

如何使用自訂解組將逗號分隔的字串解組到 Go 中的切片中?

DDD
DDD原創
2024-10-26 16:21:30572瀏覽

How to Unmarshal a Comma-Separated String into a Slice in Go Using Custom Unmarshaling?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn