当前位置: 首页 > 知识库问答 >
问题:

JSON嵌套动态结构去解码

汪安然
2023-03-14

输入数据上有一个例子。

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79105432212": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        }
    },
    "balance": 2676.18
}
type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    SmsID      string `json:"sms_id"`
    StatusText string `json:"status_text"`
}
type SMSSendJSON struct {
    Status     string     `json:"status"`
    StatusCode int        `json:"status_code"`
    Sms        []SMSPhone `json:"sms"`
    Balance    float64    `json:"balance"`
}

这是我在向服务器发出适当请求后收到的数据示例。我得到了这样的数据。如何序列化此类数据?由于嵌套结构列表的动态名称,我的尝试失败了。如何正确处理这种嵌套动态结构?

共有1个答案

郭志泽
2023-03-14

使用映射(类型为<code>map〔string〕SMSPhone</code>)以JSON建模<code>sms</code>对象:

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"`
}

然后取消封送:

var result SMSSendJSON

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

将导致(在围棋场上试试):

{状态:正常状态代码:100 SMS:map[79035671233:{状态:错误状态代码:203状态文本:неттекстасообщения} 79105432212:{状态:错误状态代码:203状态文本:неттектасообщения} 796

<code>结果中的键。Smsmap是对象的“动态”属性,即电话号码。

查看相关问题:

如何在Golang中解析/反序列化动态JSON

如何在golang中对具有未知字段名的JSON进行解组?

使用未知字段取消封送 JSON

将json字符串解组到具有结构本身一个元素的结构

 类似资料:
  • 问题内容: 在输入数据上有一个示例。 这是在向服务器发出适当请求后我收到的数据的示例。我得到了这样的数据。此类数据如何序列化?由于嵌套结构列表的动态名称,我的尝试失败了。如何正确处理此类嵌套的动态结构? 问题答案: 使用地图(类型为)在JSON中对对象进行建模: 然后拆封: 将导致(在Go Playground上尝试): {Status:OK StatusCode:100 Sms:map [790

  • 问题内容: http://play.golang.org/p/f6ilWnWTjm 我正在尝试解码以下字符串,但仅获取空值。 如何在Go中解码嵌套的JSON结构? 我想将以下内容转换为地图数据结构。 问题答案: 在Go中使用嵌套结构来匹配JSON中的嵌套结构。 这是一个如何处理示例JSON的示例: 游乐场链接 您还可以对内部结构使用匿名类型: 游乐场链接 或外部和内部结构: 游乐场链接 如果您不知

  • 问题内容: 有以下格式的JSON结果,JSON Lint将其显示为“有效响应”。 我的问题是:由于“ 141”,“ 8911”等都是动态值,我如何访问“ question_mark”的内容? 我的示例代码用于访问“产品”的价值。 我的问题标题“动态键”可能是错误的,但目前我不知道该问题的最佳名称是什么。 任何帮助将不胜感激! 问题答案: 使用JSONObject keys()获取密钥,然后迭代每个

  • 问题内容: 我有以下格式的JSON结果,JSON Lint将其显示为“有效响应”。 我的问题是:由于“ 141”,“ 8911”等都是动态值,我如何访问“ question_mark”的内容? 我的示例代码用于访问“产品”的价值。 JSON: 我的问题标题“动态键”可能是错误的,但目前我不知道该问题的最佳名称是什么。 任何帮助将不胜感激! 问题答案: 使用JSONObject keys() 获取密

  • 下面是一个Java程序,我正在尝试使用org.fasterxml.jackson.core和jackson-databind库以流式方式测试JSON处理。 目标是学习如何处理JSON并捕获我想要的信息。现在,我想要完成的是以下内容: 1)我在这里发布的JSON有很多数据。跟随这个JSON的Java程序是我试图处理这个JSON,特别是,捕获“Part1/MyAnalysis/Matches”下的“n

  • 问题内容: 我正在一个项目中使用JSON作为创建Java对象的配置框架。这也是我来自CF / PHP / JS等方面多年经验的第一个专业Java项目。 在将JSON转换为Java时,我能找到的所有资源都基于以下想法:您必须先在Java中手动构建对象,即POJO,然后使用JSON进行填充。 作为网络语言的资深人士,我对此想法感到窒息。我发现编译后的语言起着不同的作用,但是我认为从命令行到机器语言的共