go - 如何在 Go 中迭代 []interface{}
问题描述
我正在努力获取以下接口的键和值,这是 JSON 编组返回的结果的结果,Execute
如本示例所示:
[
[
{
"id": 36,
"label": "TestThing",
"properties": {
"schema__testBoolean": [
{
"id": 40,
"value": true
}
],
"schema__testInt": [
{
"id": 39,
"value": 1
}
],
"schema__testNumber": [
{
"id": 38,
"value": 1.0879834
}
],
"schema__testString": [
{
"id": 37,
"value": "foobar"
}
],
"uuid": [
{
"id": 41,
"value": "7f14bf92-341f-408b-be00-5a0a430852ee"
}
]
},
"type": "vertex"
}
]
]
reflect.TypeOf(result)
结果:[]interface{}
。
我用它来循环数组:
s := reflect.ValueOf(result)
for i := 0; i < s.Len(); i++ {
singleVertex := s.Index(i).Elem() // What to do here?
}
但是我遇到了以下错误:
reflect.Value.Interface:无法返回从未导出的字段或方法获得的值
解决方案
如果您知道那是您的数据结构,则根本没有理由使用反射。只需使用类型断言:
for key, value := range result.([]interface{})[0].([]interface{})[0].(map[string]interface{}) {
// key == id, label, properties, etc
}
推荐阅读
- python-3.x - 如何在python中获取xml文件的根元素的属性
- go - 正常应用程序关闭中的通道和信号使用
- python - Python 不会在没有 IDLE 的情况下在 Windows 上写入文件
- c++ - 在这种情况下,int** 在 C 中是什么意思?
- angular2-nativescript - Nativescript-angular2 Uncaught (in promise):错误:无法匹配具有多个嵌套路由的任何路由
- python - tkinter 窗口不显示
- wifi - 如何确定我的 Wi-Fi 卡是否支持 MIMO(多输入多输出)?
- firebase - 如何使用 Google Apps 脚本将数据写入 Firebase Cloud Firestore
- java - RecyclerView 适配器连接错误:未连接适配器
- r - 如何获得 nls(断棒)类对象的置信区间