Golang 中使用字符串拆分的自定義解組
問題:
處理JSON 解組字段需要使用字串操作拆分為切片。具體來說,提供的 JSON 中的“subjects”欄位需要按“-”拆分以建立 [] 字串。
解決方案:
要實現此目的,我們可以定義自訂字串切片類型並為其實作 json.Unmarshaler 介面。具體方法如下:
<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>
此自訂類型將允許我們將「subjects」欄位解組為字串,然後自動將其分割為切片。
修訂的結構:
現在,我們可以更新Student 結構體,為「subjects」欄位使用自訂strslice 類型:
<code class="go">type Student struct { StudentNumber int `json:"student_number"` Name string `json:"name"` Subjects strslice `json:"subjects"` }</code>
用法:
透過這些修改,我們現在可以解組提供的JSON 並自動分割「主題」欄位:<code class="go">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"}`</code>
輸出:
{1234567 John Doe [Chemistry Maths History Geography]} <nil>
以上是如何在 Golang 解組過程中將 JSON 欄位拆分為字串切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!