這裏有一個簡單的ActiveResource類。它有一些實例變量,甚至可能有一些方法,但它沒有任何數據支持。如何用這個Ruby類產生一些簡單的json?
ruby-1.8.7-p299 > class Box < ActiveResource::Base;
attr_accessor :a, :b, :c, :d;
end
=> nil
讓我們來填充它:
ruby-1.8.7-p299 > bx = Box.new; bx.a = 100; bx.b = 200;
bx.c = 300; bx.d = 400;
bx
=> #<Box:0xb5841c54 @attributes={}, @b=200, @a=100,
@prefix_options={}, @c=300, @d=400>
到目前爲止好。我們如何挑選其JSON模型的一些實例變量?假設我們只關心b
和c
,但不關注a
,d
或其他任何內容。
ruby-1.8.7-p299 > bx.to_json({:only => ['b', 'c']})
=> "{}"
這並不工作,但是,因爲我們沒有屬性稱爲 'B' 或 'C',只值。我們怎樣才能結束這樣的事情呢?
{ "box": { "b": 200, "c": 300 } }
更好的是,我們可以得到這個,而不必從ActiveResource繼承?
感謝您的回覆,賈森。兩件簡單的事情:請注意,我在這裏使用ActiveResource,而不是ActiveRecord。另外,我不確定''方法'會在這裏工作:'bx.to_json(:methods => [:b,:c])'產生一個包含所有內容的散列。其次,不寫''b「=> b,」c「=> c,...'會相當重複嗎?有沒有一種方法可以將屬性指定爲JSON-ize? – 2010-07-28 14:26:47
我的不好,在活躍的資源!對不起,我錯過了:D 關於你所問的問題:你總是可以用一個符號或字符串列表來表示你想放入JSON響應的方法。我會在上面編輯我的回覆以澄清,如果它更像是你要找的東西? – jasonpgignac 2010-07-28 19:18:18