一尘不染

解析动态json对象

go

我如何解析这个json对象:

{
    "ports": {
        "0": {
            "3306": "3306"
        },
        "1": {
            "3307": "9908"
        }
    }
}

我可以有N个端口,每个端口的值始终是key:value对。

到目前为止,我已经尝试过了:

type Ports struct {
    Port map[string]string
}

有了这个我得到键(0,1),但值是空的。

我也尝试过这个:

type Ports struct {
    Port map[string]struct{
        Values map[string]string
    }
}

但也不行。

这就是我解码json对象的方式:

var requestBody Ports
decoder := json.NewDecoder(body)
err := decoder.Decode(&requestBody)

阅读 462

收藏
2020-07-02

共1个答案

一尘不染

使用此类型:

type Ports struct {
    Ports map[string]map[string]string
}

游乐场的例子

笔记:

  • 字段名称非常匹配。我使用字段名称“ Ports”来匹配JSON文本中使用的名称。
  • Go类型在JSON中应具有相同级别的嵌套。一个结构和映射每个计数用于一个嵌套级别。第一次尝试没有足够的嵌套,第二次尝试具有太多的嵌套级别(带有“值”字段的结构)。
2020-07-02