登录
首页 >  Golang >  Go问答

将 JSON 中的嵌套数据解析成扁平化结构是否可行?

来源:stackoverflow

时间:2024-03-18 10:33:21 105浏览 收藏

在 Go 语言中,可以利用 `json.Unmarshaler` 接口将嵌套的 JSON 数据解析成扁平化的结构。通过实现此接口,可自定义 JSON 解组过程,将嵌套字段提取到不同的结构字段中。这使得解析复杂 JSON 数据成为可能,即使数据结构嵌套或需要对字段进行转换或处理。

问题内容

在 go 中,我可以将嵌套 json 解组到不同的结构化结构吗?例如压平嵌套。

{
  "id":1,
  "person":{
    "name": "jack"
    "extra": {
      "age": 21
    }
  }
}
type Item struct {
  ID int64 `json:"id"`
  Name string `json:"name"`
  Age string `json:"age"`
}

解决方案


您可以通过实现 json.Unmarshaler 接口来实现。

func (i *Item) UnmarshalJSON(data []byte) error {
    var temp struct {
        ID     int64 `json:"id"`
        Person struct {
            Name  string `json:"name"`
            Extra struct {
                Age int `json:"age"`
            } `json:"extra"`
        } `json:"person"`
    }
    if err := json.Unmarshal(data, &temp); err != nil {
        return err
    }
    i.ID = temp.ID
    i.Name = temp.Person.Name
    i.Age = strconv.Itoa(temp.Person.Extra.Age)
    return nil
}

https://play.golang.com/p/nRGw8ovo7vr

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>