Je travaille sur un projet RoR et je passe un objet JSON à un script. Plus précisément, une liste d'événements à un calendrier jquery.Ruby + JSON + Regexp
D'abord je reçois les événements nécessaires de dossier actif et de les convertir en JSON:
@events = CalendarEvent.find(:all, :conditions => ["mentor_id = ?", current_user]).to_json(:only => [:id, :availability, :starts_at, :ends_at])
Cela renvoie les éléments suivants:
[{"calendar_event":{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"}},
{"calendar_event":{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"}},
...]
Cependant, je me présente des problèmes parce que le script attend le format suivant:
[{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"},
{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"},
...]
Au début, je pensais que ce serait un simple question de sauter les valeurs des hachages distincts, et de retourner un tableau rempli de ceux-ci. Cependant, il semble que tout dans le tableau est une grande chaîne. Donc j'essayais d'obtenir les choses nécessaires en utilisant une expression régulière. Mon meilleur tir était:
@json = @events.scan(/\[\{\"calendar_event\":(\{.*\})\}\]*/)
Mais cela renvoie quelque chose de la forme:
[["{\"starts_at\":\"2010-08-14T17:15:00Z\",\"id\":1,\"availability\":true,\"ends_at\":\"2010-08-14T17:45:00Z\"}},{\"calendar_event\":{\"starts_at\":\"2010-08-15T15:45:00Z\",\"id\":2,\"availability\":true,\"ends_at\":\"2010-08-15T16:15:00Z\"}},..."]]
Toute aide serait appréciée.
Merci. J'aurais aimé avoir trouvé ça il y a quelques heures. – Phillip
exemple classique de RTFM qui m'a fait rire; bon conseil et bonne réponse! – Luceos