gpt4 book ai didi

go - JSON 对象的解码值

转载 作者:IT王子 更新时间:2023-10-29 00:37:07 26 4
gpt4 key购买 nike

如果给定字符串,来自 MediaWiki API 请求:

str = ` {
"query": {
"pages": {
"66984": {
"pageid": 66984,
"ns": 0,
"title": "Main Page",
"touched": "2012-11-23T06:44:22Z",
"lastrevid": 1347044,
"counter": "",
"length": 28,
"redirect": "",
"starttimestamp": "2012-12-15T05:21:21Z",
"edittoken": "bd7d4a61cc4ce6489e68c21259e6e416+\\"
}
}
}
}`

如何使用 Go's json package 获取 edittoken| (请记住 66984 号码会不断变化)?

最佳答案

当你有这样一个不断变化的 key 时,最好的处理方法是使用 map 。在下面的示例中,我一直使用结构,直到我们到达更改键为止。之后我切换到 map 格式。我也链接了一个工作示例。

http://play.golang.org/p/ny0kyafgYO

package main

import (
"fmt"
"encoding/json"
)

type query struct {
Query struct {
Pages map[string]interface{}
}
}


func main() {
str := `{"query":{"pages":{"66984":{"pageid":66984,"ns":0,"title":"Main Page","touched":"2012-11-23T06:44:22Z","lastrevid":1347044,"counter":"","length":28,"redirect":"","starttimestamp":"2012-12-15T05:21:21Z","edittoken":"bd7d4a61cc4ce6489e68c21259e6e416+\\"}}}}`

q := query{}
err := json.Unmarshal([]byte(str), &q)
if err!=nil {
panic(err)
}
for _, p := range q.Query.Pages {
fmt.Printf("edittoken = %s\n", p.(map[string]interface{})["edittoken"].(string))
}
}

关于go - JSON 对象的解码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13889745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com