首页  >  文章  >  后端开发  >  如何在 Golang 解组过程中将 JSON 字段拆分为字符串切片?

如何在 Golang 解组过程中将 JSON 字段拆分为字符串切片?

Susan Sarandon
Susan Sarandon原创
2024-10-27 03:20:30881浏览

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn