首页 > 后端开发 > Golang > 正文

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

Susan Sarandon
发布: 2024-10-27 03:20:30
原创
891 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!