estoy trabajando con la API de Twitter, tratando de obtener los datos JSON deJSON básica> pregunta struct (usando 'ir')
http://search.twitter.com/trends/current.json
que se parece a:
{"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\""}]}}
Mis estructuras vistazo como:
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
}
y luego analizar el JSON en una variable de tipo Trending
. Soy muy nuevo en JSON, así que mi principal preocupación es asegurarme de tener la estructura de datos correctamente configurada para contener los datos JSON devueltos.
Estoy escribiendo esto en 'Go' para un proyecto para la escuela. (Esto no es parte de una tarea en particular, solo estoy demostrando algo para una presentación sobre el lenguaje)
ACTUALIZACIÓN: De acuerdo con el comentario de PeterSO voy por la ruta de expresión regular. Usando:
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)
No muestra ningún cambio. ¿Estoy especificando mal la expresión regular? Parece que 'Ir' solo permite una expresión regular a la vez ...
ACTUALIZACIÓN: ahora puede cambiar la fecha/hora a "ntrends" pero el "Unmarshaling" no está funcionando. Puedo conseguir todo lo trasladó a una interfaz que use json.Decode, pero no puedo iterar a través de él ...
Creo que mi nueva pregunta es, ¿Cómo iterar a través de:
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"]]]]
usando "para ... range "me está dando cosas raras ...
Gracias Peter. FWIW No me califican en ninguno de los códigos, en realidad no escribo ningún código, solo intento mostrar las capacidades del lenguaje. Es una clase de "Teoría de los lenguajes de programación" que realmente me ha encantado. Estamos cubriendo los rieles en este momento ... – danwoods
see edited OP ... – danwoods