在 Python 中,您可以执行以下操作:
r = requests.get("http://wikidata.org/w/api.php", params=params)
data = r.json()
现在data是一个字典或哈希表(另外,我不需要事先定义字典的结构),我可以通过做 data["entities"], data["entities"]["Q12 来访问键的值“], 等等。
我将如何在 golang 中做到这一点?到目前为止,我有这个:
resp, err := http.Get("http://wikidata.org/w/api.php?"+v.Encode())
if err != nil {
// handle error
}
defer resp.Body.Close()
decoder := json.NewDecoder(resp.Body)
var data interface{}
decodeErr := decoder.Decode(&data)
if decodeErr != nil {
// handle error
}
fmt.Println(data["entities"], data["entities"]["Q"+id])
这给了我编译错误: invalid operation: data["entities"] (index of type interface {})
那么应该var data是什么类型呢?我是否需要事先为 JSON 定义一个结构,或者是否可以在不修改代码的情况下处理任何 JSON 文件/流?
相关分类