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>
This方法提供了一种干净且可定制的方式来处理字段转换,同时解组 JSON 数据。
以上是如何在 Golang 解组过程中将 JSON 字段拆分为字符串切片?的详细内容。更多信息请关注PHP中文网其他相关文章!