如何在Go中解析此JSON字符串?

有问题的JSON字符串如下所示:


{

"development":{

    "connector":[

         {"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "wsPort":3050},

         {"id":"connector-server-2", "host":"127.0.0.1", "port":4051, "wsPort":3051},

         {"id":"connector-server-3", "host":"127.0.0.1", "port":4052, "wsPort":3052}

     ],

    "chat":[

         {"id":"chat-server-1", "host":"127.0.0.1", "port":6050},

         {"id":"chat-server-2", "host":"127.0.0.1", "port":6051},

         {"id":"chat-server-3", "host":"127.0.0.1", "port":6052}

    ],

    "gate":[

     {"id": "gate-server-1", "host": "127.0.0.1", "wsPort": 3014}

]

},

"production":{

   "connector":[

         {"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "wsPort":3050},

         {"id":"connector-server-2", "host":"127.0.0.1", "port":4051, "wsPort":3051},

         {"id":"connector-server-3", "host":"127.0.0.1", "port":4052, "wsPort":3052}

     ],

    "chat":[

         {"id":"chat-server-1", "host":"127.0.0.1", "port":6050},

         {"id":"chat-server-2", "host":"127.0.0.1", "port":6051},

         {"id":"chat-server-3", "host":"127.0.0.1", "port":6052}

    ],

    "gate":[

     {"id": "gate-server-1", "host": "127.0.0.1", "wsPort": 3014}

]

}

}

我想用这样的代码来解析它:


package config


import(

    "sync"

    "io/ioutil"

    "encoding/json"

    "errors"

    "log"

)


type Service struct {

    Id string `json:"id"`

    Host string `json:"host"`

    Port uint `json:"port"`

    QueryPort uint `json:"queryPort"`

    WsPort uint `json:"wsPort"`

    ServiceType string 

}


type Config struct {

    Services []Service

    Master Service

    Mutex sync.RWMutex

}


func LoadServers(filepath, env string) (*Config, error) {

    // 读取文件

    content, err := ioutil.ReadFile(filepath)

    if err != nil {

        return nil, err

    }


    configs := make(map[string]map[string][]Service, 0)

    err = json.Unmarshal(content, configs)

    if err != nil {

        return nil, err

    }

}

我希望我的代码将此JSON字符串解析为map[string]map[string][]Service。


但它显示错误:


json: Unmarshal(non-pointer map[string]map[string][]config.Service)


慕丝7291255
浏览 282回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go