Je travaille avec l'api de twitter, en essayant d'obtenir les données JSON deJSON de base> question struct (en utilisant 'Go')
http://search.twitter.com/trends/current.json
qui ressemble à:
{"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\""}]}}
Mon struct regard comme:
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
}
puis je parse la JSON dans une variable de type Trending
. Je suis très nouveau dans JSON, donc ma principale préoccupation est de m'assurer que la structure de données est correctement configurée pour contenir les données renvoyées par JSON. J'écris ceci dans 'Go' pour un projet pour l'école. (Cela ne fait pas partie d'une mission particulière, juste quelque chose que je démo-pour une présentation sur la langue)
MISE À JOUR: Conformément au commentaire de PeterSO je vais la voie de l'expression rationnelle. Utilisation:
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)
N'affiche aucun changement. Est-ce que je spécifie l'expression rationnelle incorrecte? Il semble que 'Go' n'autorise qu'une seule regexp à la fois ...
MISE À JOUR: peut maintenant changer la date/heure en "ntrends" mais le "Unmarshaling" ne fonctionne pas. Je peux tout déplacé dans une interface à l'aide json.Decode, mais ne peut pas itérer à travers elle ...
Je pense que ma nouvelle question est: Comment puis-je itérer:
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"]]]]
en utilisant « pour ... range "me donne des choses étranges ...
Merci Peter. FWIW Je ne reçois aucune note sur le code, je n'écris actuellement aucun code, essayant simplement de montrer les capacités du langage. C'est pour un cours de "Théorie des langages de programmation" que j'ai vraiment aimé. Nous couvrons les rails en ce moment ... – danwoods
voir édité OP ... – danwoods