首页  >  文章  >  后端开发  >  如何在 Go 中使用字符串拆分自定义 JSON 解组?

如何在 Go 中使用字符串拆分自定义 JSON 解组?

Linda Hamilton
Linda Hamilton原创
2024-10-26 04:23:02477浏览

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