я могу импортировать данные JSON в базу данных с помощью моего приложения rails? - PullRequest
4 голосов
/ 17 марта 2011

У меня есть одно приложение рельсов.Я получил данные JSON через вызов Ajax, и теперь я хочу импортировать мои данные JSON в базу данных приложения.Как я могу заархивировать это?Может кто-нибудь мне помочь?Заранее спасибо.

--- Обновление ---Мое приложение имеет модель задач и модель пользователя.У пользователя много задач, и задача принадлежит пользователю.После входа пользователя я сделаю Ajax-вызов (jQuery getJSON), чтобы получить данные JSON от другого поставщика услуг.Я хочу импортировать данные JSON в базу данных в виде задач.

---- Добавить образец данных Json ----

  {
   "server_time":"2010-12-22 15:27:04 +0800",
     "entries":[
       {
         "all_day":true,
         "archived":null,
         "assignment":null,
         "attribute":"plan",
         "completed":null,
         "context":null,
         "created":"2010-12-14 14:50:24 +0800",
         "deleted":null,
         "end_at":null,
         "forwarded_by":null,
         "id":"jee+ypfERGSCqlXjuyUjYw==",
         "notes":"",
         "priority":0,
         "project":null,
         "reminders":[],
         "repeat_no":null,
         "repeater":null,
         "start_at":"2010-12-14 00:00:00 +0800",
         "tags":[],
         "title":"xcv",
         "trashed":null,
         "updated":"2010-12-14 14:50:24 +0800",
         "hidden":null
       }
       ...
       {
         "all_day":true,
         "archived":null,
         "assignment":null,
         "attribute":"inbox",
         "completed":null,
         "context":null,
         "created":"2010-12-15 16:12:24 +0800",
         "deleted":null,
         "end_at":null,
         "forwarded_by":null,
         "id":"MOAvW5IBTXScMVq2WdXFXQ==",
         "notes":"",
         "priority":0,
         "project":"z1",
         "reminders":[],
         "repeat_no":null,
         "repeater":null,
         "start_at":null,
         "tags":[],
         "title":"3",
         "trashed":null,
         "updated":"2010-12-15 16:12:24 +0800",
         "hidden":null
       },
       {
         "all_day":true ,
         "archived":null,
         "assignment":null,
         "attribute":"plan",
         "completed":null,
         "context":null,
         "created":"2010-12-15 18:29:27 +0800",
         "deleted":null,
         "end_at":null,
         "forwarded_by":null,
         "id":"dSOHwcYQRbmTCO+wjtUUaQ==",
         "notes":"",
         "priority":0,
         "project":null,
         "reminders":[],
         "repeat_no":null,
         "repeater":null,
         "start_at":"2010-12-17 00:00:00 +0800",
         "tags":[],
         "title":"after day",
         "trashed":null,
         "updated":"2010-12-15 18:29:27 +0800",
         "hidden":null
       }
     ],
   "addtional":"full"
 }

1 Ответ

19 голосов
/ 17 марта 2011

Если у вас еще нет гема JSON, вы можете установить его с помощью командной строки:

gem install json

Это позволит вам проанализировать JSON в его эквивалентных структурах данных Ruby.

Если JSON уже соответствует вашей модели, вам просто нужно сделать что-то вроде:

new_record = Model.new(JSON.parse(json_string_from_external_service)) 
new_record.save

Если он еще не соответствует вашей модели, вы можете сделать:

a_hash = JSON.parse(json_string_from_external_service)

ТогдаВы просто копируете свои атрибуты и сохраняете:

new_record = Model.new
new_record.attribute_1 = a_hash['key_for_attribute_1']
... etc ...
new_record.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...