作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有以下代码,我想遍历所有元素或访问一个元素,如 birds["eagle"["quote"][2]
但我想不通
package main
import (
"fmt"
"encoding/json"
)
func main() {
birdJson := `{"birds": {"pigeon": {"quotes": "love the pigeons"}, "eagle": {"quotes": ["bird of prey", "soar like an eagle", "eagle has no fear"]}}}`
var result map[string]interface{}
json.Unmarshal([]byte(birdJson), &result)
birds := result["birds"].(map[string]interface{})
fmt.Printf("%v\n",birds)
eagle := birds["eagle"]
for key, value := range eagle {
fmt.Println(key, value.(string))
}
}
最佳答案
有几个问题:
eagle := birds["eagle"] //eagle is of type interface{}
所以将它转换到 map 中:
eagle := birds["eagle"].(map[string]interface{})
现在您可以对其进行迭代:
for key, value := range eagle {
for _, e := range value.([]interface{}){
fmt.Println(key, e.(string))
}
}
这里的值又是接口(interface)。所以首先转换为 []interface{},然后转换为 string。
这是完整的工作代码: https://play.golang.org/p/Bdnwit1wBYh
关于json - 不能用 "encoding/json"覆盖鹰(类型接口(interface) {}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54882618/
我是一名优秀的程序员,十分优秀!