【发布时间】:2011-01-25 02:26:00
【问题描述】:
我正在使用 twitter 的 api,试图从中获取 json 数据
http://search.twitter.com/trends/current.json
看起来像:
{"as_of":1268069036,"trends":{"2010-03-08 17:23:56":[{"name":"Happy Women's Day","query":"\"Happy Women's Day\" OR \"Women's Day\""},{"name":"#MusicMonday","query":"#MusicMonday"},{"name":"#MM","query":"#MM"},{"name":"Oscars","query":"Oscars OR #oscars"},{"name":"#nooffense","query":"#nooffense"},{"name":"Hurt Locker","query":"\"Hurt Locker\""},{"name":"Justin Bieber","query":"\"Justin Bieber\""},{"name":"Cmon","query":"Cmon"},{"name":"My World 2","query":"\"My World 2\""},{"name":"Sandra Bullock","query":"\"Sandra Bullock\""}]}}
我的结构看起来像:
type trend struct {
name string
query string
}
type trends struct {
id string
arr_of_trends []trend
}
type Trending struct {
as_of string
trends_obj trends
}
然后我将 JSON 解析为 Trending 类型的变量。我对 JSON 很陌生,所以我主要关心的是确保我已经正确设置了数据结构来保存返回的 json 数据。
我正在“Go”中为学校的一个项目写这篇文章。 (这不是特定作业的一部分,只是我正在演示的语言演示)
更新:根据 PeterSO 的评论,我将走正则表达式路线。使用:
Cur_Trends := new(Current)
/* unmarshal the JSON into our structures */
//find proper json time-name
aoUnixTime, _, _ := os.Time()
// insert code to find and convert as_of Unix time to aoUnixTime
aoName := time.SecondsToUTC(aoUnixTime).Format(`"2006-01-02"`)
fmt.Printf("%s\n", aoName)
regexp_pattern := "/" + aoName + "/"
regex, _ := regexp.Compile(regexp_pattern);
cleaned_json := regex.ReplaceAllString(string(body2), "ntrends")
os.Stdout.WriteString(cleaned_json)
不显示任何更改。我指定的正则表达式错误吗?似乎“Go”一次只允许一个正则表达式......
更新: 现在可以将日期/时间更改为“ntrends”,但“Unmarshaling”不起作用。我可以使用 json.Decode 将所有内容移到接口中,但无法遍历它...
我想我的新问题是,我该如何迭代:
map[as_of:1.268176902e+09 trends:map[ntrends:[map[name:#nowplaying query:#nowplaying] map[name:#imtiredofseeing query:#imtiredofseeing] map[name:#iWillNever query:#iWillNever] map[name:#inmyfamily query:#inmyfamily] map[name:#raiseyourhandif query:#raiseyourhandif] map[name:#ripbig query:#ripbig] map[name:QVC query:QVC] map[name:#nooffense query:#nooffense] map[name:#RIPLaylaGrace query:#RIPLaylaGrace] map[name:Justin Bieber query:"Justin Bieber"]]]]
使用“for...range”给了我一些奇怪的东西...
【问题讨论】:
标签: regex json data-structures map go