我正在寻找一种在运行时向已定义的类添加属性的方法,或者更好的方式:
class Client
attr_accessor :login, :password
def initialize args = {}
self.login = args[:login]
self.password = args[:password]
end
end
但是,我有这个哈希值
{:swift_bic=>"XXXX", :account_name=>"XXXX", :id=>"123", :iban=>"XXXX"}
我希望这个哈希值成为我的客户端实例的一部分,像这样:
client = Client.new :login => 'user', :password => 'xxxxx'
然后以神奇的魔力
client @@%$%PLIM!!! {:swift_bic=>"XXXX", :account_name=>"XXXX", :id=>"123", :iban=>"XXXX"}
我将能够访问
client.swift_bic => 'XXXX'
client.account_name => 'XXXX'
client.id => 123
而且我也想保持适当的对象结构,例如:
Client.new(:login => 'user', :password => 'xxxxx').inspect
#<Client:0x1033c4818 @password='xxxxx', @login='user'>
魔法之后
client.inspect
#<Client:0x1033c4818 @password='xxxxx', @login='user', @swift_bic='XXXX', @account_name='XXXX' @id => '123', @iban => 'XXXX'>
有没有可能让我得到一个非常漂亮和格式良好的json呢?
这真的可能吗?
我从一个Web服务中获取此哈希值,因此如果其中有新属性,我就不知道了,然后每次他们升级服务时我都必须更新我的应用程序。所以,我正在尝试避免这种情况:/
谢谢大家。
:)