哈喽!大家好,很高兴又见面了,我是编程网的一名作者,今天由我给大家带来一篇《如何将映射添加到用于反序列化 JSON 配置的同一结构中?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关
哈喽!大家好,很高兴又见面了,我是编程网的一名作者,今天由我给大家带来一篇《如何将映射添加到用于反序列化 JSON 配置的同一结构中?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!
问题内容我正在将 json 反序列化为如下所示的结构,并且工作正常。
type dataconfigs struct {
clientmetrics []client `json:"clientmetrics"`
}
type client struct {
clientid int `json:"clientid"`
.....
.....
}
const (
configfile = "clientmap.json"
)
func readconfig(path string) (*dataconfigs, error) {
files, err := utilities.findfiles(path, configfile)
// check for error here
var dataconfig dataconfigs
body, err := ioutil.readfile(files[0])
// check for error here
err = json.unmarshal(body, &dataconfig)
// check for error here
return &dataconfig, nil
}
现在我正在尝试使用按上面代码中所示创建的 dataconfigs 对象构建 integer 和 client 的映射。因此,我创建了一个方法来完成该工作,如下所示,并修改了 readconfig 方法来完成该工作。
func ReadConfig(path string, logger log.Logger) (*DataConfigs, error) {
files, err := utilities.FindFiles(path, ConfigFile)
// check for error here
var dataConfig DataConfigs
body, err := ioutil.ReadFile(files[0])
// check for error here
err = json.Unmarshal(body, &dataConfig)
// check for error here
idx := BuildIndex(dataConfig)
// now how to add this idx and dataConfig object in one struct?
return &dataConfig, nil
}
func BuildIndex(dataConfig DataConfigs) map[int]Client {
m := make(map[int]Client)
for _, dataConfig := range dataConfig.ClientMetrics {
m[dataConfig.ClientId] = dataConfig
}
return m
}
我的困惑是 - 我是否应该修改 dataconfigs 结构以添加 idx 映射,然后从 readconfig 方法返回该结构,还是应该创建一个新的结构来处理该结构?
基本上我想返回 dataconfigs 结构,其中包含 clientmetrics 数组以及 idx 映射。我怎样才能在这里做到这一点?我有点困惑,因为我最近开始使用 golang。
这基本上是一个有多个选项的设计问题。首先,我会避免将映射添加到原始 DataConfigs 类型,因为它与 json 表示形式不匹配。这可能会导致未来的混乱。
选择哪个选项取决于您的要求和偏好。我的一些想法:
本篇关于《如何将映射添加到用于反序列化 json 配置的同一结构中?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!
--结束END--
本文标题: 如何将映射添加到用于反序列化 json 配置的同一结构中?
本文链接: https://www.lsjlt.com/news/596742.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0