Module: JsonToStruct

Defined in:
lib/json_to_struct.rb

Overview

JsonToStruct is a module that converts a JSON string to a nested struct

usage:

 > s =  JsonToStruct.load(
          "           {\n             \"employee\": {\n               \"name\":\"Hal\",\n               \"salary\":56000,\n               \"married\":false\n             }\n           }\n          JSON\n        )\n=> #<struct employee=\n     #<struct name=\"Hal\", salary=56000, married=false>>\n > s.employee.name\n=> 'Hal'\n"

Class Method Summary collapse

Class Method Details

._load_helper(json) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/json_to_struct.rb', line 27

def self._load_helper(json)
  case json
  when Hash
    struct = ::Struct.new(*json.keys)
    struct.new(*json.values.map { |v| _load_helper(v) })
  when Array
    json.map { |v| _load_helper(v) }
  else
    json
  end
end

.load(json_string) ⇒ Object



22
23
24
25
# File 'lib/json_to_struct.rb', line 22

def self.load(json_string)
  json = Oj.load(json_string, symbol_keys: true)
  _load_helper(json)
end