go - 如何获取 openapi 服务器值
问题描述
我的服务器有以下yaml
openapi 3
配置:
servers:
- url: "localhost"
description: "localhost development server"
variables:
port:
default: ":10000"
如果没有那个讨厌的破折号,通过这些值获得这些值viper
是微不足道的,但我正在努力解决它(这是使yaml
openapi 3
合规所必需的。
这样做:
servers := viper.Get("servers")
fmt.Println(reflect.TypeOf(servers))
fmt.Println(servers)
告诉我这个:
[]interface {}
[map[description:localhost development server url:localhost variables:map[port:map[default::10000]]]]
但是我的 n00biegolang
能力缺乏 ninja Skillz 来检索该:10000
值port
。
非常感谢任何帮助!
解决方案
servers
是一个数组。假设 Viper 无法处理数组,您首先必须索引servers
以获取其中的对象:
server:=servers[0]
一旦你有了服务器,假设它是一个map[string]interface{}
,你可以下降:
if v, ok:=server["variables"]; ok {
if varMap, ok:=v.(map[string]interface{}); ok {
if p, ok:=varMap["port"]; ok {
if port, ok:=p.(map[string]interface{}); ok {
if d, ok:=port["default"]; ok {
defaultValue=fmt.Sprint(d)
}
}
}
}
}
推荐阅读
- c# - 如何重写代码以将匿名类型分配给列表框
- excel - Excel宏检查单元格是否为空并在列中搜索特定单词
- javascript - 如何在 REACTJS 中创建嵌套的 JSON 请求
- mysql-workbench - 在 mysql 工作台中添加索引损坏了表?
- javascript - 如何根据年份和学期对数据进行分组以在 Laravel Blade 中打印
- reactjs - redux-saga 中的调度操作未获取数据
- javascript - 显示“未定义”的弹出窗口的 mapbox geojson 描述
- c# - 使 asp:HyperLink 列表项在 asp:DataList
- java - 出现意外错误(类型=错误请求,状态=400)
- python - 使用 wand (ImageMagick) 视频处理的 Rpi 4B(GPU 专用 2.7G RAM)上的 FPS 非常低