首頁 >後端開發 >Golang >如何在 Go 中使用字串拆分自訂 JSON 解組?

如何在 Go 中使用字串拆分自訂 JSON 解組?

Linda Hamilton
Linda Hamilton原創
2024-10-26 04:23:02566瀏覽

How to Customize JSON Unmarshaling with String Split in Go?

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

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