Как использовать форматирование JSON с ActiveResource в Ruby? - PullRequest
13 голосов
/ 06 мая 2009

ActiveRecord внес изменение в формат вывода JSON по умолчанию. Это пошло от

{ "user": { some_junk } }

до

{ some_junk }

ActiveResource, очевидно, последовал их примеру, ожидая использовать JSON как

{ some_junk }

Я отчаянно пытаюсь использовать веб-сервис RESTful, который испускает

{ "user": { some_junk } }

Есть ли способ указать моему ActiveResource :: Base классу сделать это? Вот мой код.

class User < ActiveResource::Base
    self.site = "http://example.com/"
    self.format = :json
end

Обновление : я разочаровываюсь в ActiveResource, который пока не работает, если кто-то не знает ответа; в то же время, я смог достичь того, что я хотел получить через

require 'httparty' # sudo gem install httparty
result = HTTParty.get('http://foo.com/bar.json', headers => { "Foo" => "Bar"})
# result is a hash created from the JSON -- sweet!

Ответы [ 2 ]

10 голосов
/ 22 мая 2009

Да, ActiveResource в настоящее время немного негибок, когда дело касается форматов данных.

В принципе, идея заключается в том, что вы можете написать собственный модуль формата (например, JsonWithRootFormat), основанный на модуле ActiveResource::Formats::JsonFormat, а затем указать его в качестве формата в вашей модели:

self.format = :json_with_root

Однако ActiveResource::Base не очень независим от формата - в настоящее время выполняет проверку , чтобы определить, используете ли вы XmlFormat, и пропускает корневой узел только в том случае, если вы это делаете.

Таким образом, вы можете получить то, что хотели, сделав свой собственный модуль форматирования, и monkey-patching ActiveResource::Base, но это вряд ли идеально. Я уверен, что патч, чтобы сделать Base немного более независимым от формата, будет приветствоваться.

0 голосов
/ 23 ноября 2013

Вот хороший пост в блоге @ vaskas , объясняющий, как написать собственный настраиваемый ActiveResource Formatter.

Использование хэшей в качестве коллекций ActiveResource

http://vaskas.me/blog/2012/02/07/using-hashes-as-activeresource-collections/

...