Class: OpenStruct
- Inherits:
- 
      Object
      
        - Object
- OpenStruct
 
- Defined in:
- lib/json/add/ostruct.rb
Direct Known Subclasses
Class Method Summary collapse
- 
  
    
      .json_create(object)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    See #as_json. 
Instance Method Summary collapse
- 
  
    
      #as_json  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Methods OpenStruct#as_jsonandOpenStruct.json_createmay be used to serialize and deserialize a OpenStruct object; see Marshal.
- 
  
    
      #to_json(*args)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Returns a JSON string representing self:.
Class Method Details
.json_create(object) ⇒ Object
See #as_json.
| 13 14 15 | # File 'lib/json/add/ostruct.rb', line 13 def self.json_create(object) new(object['t'] || object[:t]) end | 
Instance Method Details
#as_json ⇒ Object
Methods OpenStruct#as_json and OpenStruct.json_create may be used to serialize and deserialize a OpenStruct object; see Marshal.
Method OpenStruct#as_json serializes self, returning a 2-element hash representing self:
require 'json/add/ostruct'
x = OpenStruct.new('name' => 'Rowdy', :age => nil).as_json
# => {"json_class"=>"OpenStruct", "t"=>{:name=>'Rowdy', :age=>nil}}
Method JSON.create deserializes such a hash, returning a OpenStruct object:
OpenStruct.json_create(x)
# => #<OpenStruct name='Rowdy', age=nil>
| 33 34 35 36 37 38 39 40 | # File 'lib/json/add/ostruct.rb', line 33 def as_json(*) klass = self.class.name klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!" { JSON.create_id => klass, 't' => table, } end | 
#to_json(*args) ⇒ Object
Returns a JSON string representing self:
require 'json/add/ostruct'
puts OpenStruct.new('name' => 'Rowdy', :age => nil).to_json
Output:
{"json_class":"OpenStruct","t":{'name':'Rowdy',"age":null}}
| 51 52 53 | # File 'lib/json/add/ostruct.rb', line 51 def to_json(*args) as_json.to_json(*args) end |