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中文网其他相关文章!