Хранение json (facebook api) в базе данных и их получение

Я хранил некоторые данные из facebook api, используя драгоценный камень коала в базе данных:

fb_data = graph.get_connections(...)
fb_data.each do |t|
    obj.raw_data = t
    obj.save
end

и это выглядит так, когда я извлекаю его из базы данных:

--- id: '111222333444' from: name: James B id: '44444333332222' story: XXX ...

Я не знаком с этим форматом, поэтому мне было интересно, сделал ли я что-то не так?


person titibouboul    schedule 02.09.2013    source источник


Ответы (2)


Итак, вот ответ, который я нашел с помощью @miguelgraz:

fb_data = graph.get_connections(...)
fb_data.each do |t|
    obj.raw_data = YAML::dump(t) #Serialize the hash
    obj.save
end

а затем для получения данных:

t = YAML::load(t) #deserialize it
person titibouboul    schedule 04.09.2013
comment
Я собирался сказать, что вам, вероятно, придется поработать с этим хешем в переменной |t|, рад, что вы уже нашли правильное решение =) - person Miguelgraz; 04.09.2013
comment
Спасибо, просьба проверить класс |t| заставила меня найти ответ;) - person titibouboul; 05.09.2013

Вы, вероятно, действительно сохраняете его в необработанном формате, попробуйте использовать что-то вроде t.to_json, чтобы сохранить json этой информации, может быть, что-то вроде

fb_data = graph.get_connections(...)
fb_data.each do |t|
  obj.raw_data = t.to_json
  obj.save
end
person Miguelgraz    schedule 02.09.2013
comment
Просто попробовал, и теперь результат выглядит так: {\ id \: \ 111222333444 \, \ from \: {\ name \: \ James B \, \ id \: \ 44444333332222 \}, \ story \: \ XXX \ , ...} но это все еще не массив, и я не могу получить к нему доступ. Например, если я попробую obj [id], он вернет id вместо 111222333444. - person titibouboul; 03.09.2013
comment
Вы, наверное, хотите, чтобы что-то вроде хеша было сохранено в БД, верно? Можете ли вы опубликовать текущий формат / состояние переменной fb_data и итератора |t|? - person Miguelgraz; 03.09.2013
comment
Если я сделаю .class.name, fb_data вернет Koala :: Facebook :: API :: GraphCollection, а |t| вернет Hash - person titibouboul; 04.09.2013