首页 > 后端开发 > Golang > 如何在 Go 中解析具有嵌套动态结构的 JSON 数据?

如何在 Go 中解析具有嵌套动态结构的 JSON 数据?

Patricia Arquette
发布: 2024-11-19 16:25:02
原创
234 人浏览过

How to Parse JSON Data with Nested Dynamic Structures in Go?

Go 解码 JSON 嵌套动态结构

本讨论探讨了解析具有嵌套动态结构的 JSON 数据的挑战Go。

问题:

示例 JSON 数据包含带有动态键的嵌套结构,例如电话号码,如下所示:

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {...},
        "79105432212": {...}
    },
    "balance": 2676.18
}
登录后复制

提供的示例代码尝试使用固定的电话号码列表来对嵌套结构进行建模,但由于电话号码的动态特性,这种方法失败了

解决方案:

要处理嵌套的动态结构,应该使用映射而不是固定列表来对数据进行建模。对于此示例,可以使用以下数据结构:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}
登录后复制

在此更新的结构中,map[string]SMSPhone 用于表示嵌套的“sms”对象,其中映射键对应于动态电话号码。

要将 JSON 数据解组到这些结构中,可以使用以下代码:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)
登录后复制

结果将是一个 Go 结构体,其中包含一个包含嵌套动态电话号码数据的映射。

展示 Go 中动态结构的映射使用的相关问题包括:

  • 如何解析/在 Golang 中反序列化动态 JSON
  • 如何将未知字段名的 JSON 解组到结构中golang?
  • 解组具有未知字段的 JSON
  • 将 json 字符串解组到具有结构本身一个元素的结构

以上是如何在 Go 中解析具有嵌套动态结构的 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板