Không chắc liệu điều này có hữu ích hay không, nhưng nếu bạn đọc bình luận của tôi bên dưới câu trả lời của d_ethier, bạn có thể thấy rằng IPAddr
không thực sự biết gì về JSON.
Tuy nhiên, bạn có thể vá nó để hiểu JSON như vậy:
require 'active_model'
require 'active_support'
require 'active_support/core_ext'
require 'ipaddr'
class IPAddr
include ActiveModel::Serializers::JSON
attr_accessor :addr, :mask_addr, :family
def attributes=(hash)
hash.each do |key, value|
send("#{key}=", value)
end
end
def attributes
instance_values
end
end
p i = IPAddr.new('127.0.0.1')
p j = i.to_json
p IPAddr.new.from_json(j)
Đầu ra:
#<IPAddr: IPv4:127.0.0.1/255.255.255.255>
"{\"family\":2,\"addr\":2130706433,\"mask_addr\":4294967295}"
#<IPAddr: IPv4:127.0.0.1/255.255.255.255>
Nguồn:
http://apidock.com/rails/ActiveModel/Serializers / JSON / from_json