class Aws::Json::Parser
Public Class Methods
new(rules)
click to toggle source
@param [Seahorse::Model::ShapeRef] rules
# File lib/aws-sdk-core/json/parser.rb, line 13 def initialize(rules) @rules = rules end
Public Instance Methods
parse(json, target = nil)
click to toggle source
@param [String<JSON>] json
# File lib/aws-sdk-core/json/parser.rb, line 18 def parse(json, target = nil) parse_ref(@rules, Json.load(json), target) end
Private Instance Methods
list(ref, values, target = nil)
click to toggle source
# File lib/aws-sdk-core/json/parser.rb, line 44 def list(ref, values, target = nil) target = [] if target.nil? values.each do |value| target << parse_ref(ref.shape.member, value) end target end
map(ref, values, target = nil)
click to toggle source
# File lib/aws-sdk-core/json/parser.rb, line 52 def map(ref, values, target = nil) target = {} if target.nil? values.each do |key, value| target[key] = parse_ref(ref.shape.value, value) end target end
parse_ref(ref, value, target = nil)
click to toggle source
# File lib/aws-sdk-core/json/parser.rb, line 60 def parse_ref(ref, value, target = nil) if value.nil? nil else case ref.shape when StructureShape then structure(ref, value, target) when ListShape then list(ref, value, target) when MapShape then map(ref, value, target) when TimestampShape then time(value) when BlobShape then Base64.decode64(value) when BooleanShape then value.to_s == 'true' else value end end end
structure(ref, values, target = nil)
click to toggle source
# File lib/aws-sdk-core/json/parser.rb, line 24 def structure(ref, values, target = nil) shape = ref.shape target = ref.shape.struct_class.new if target.nil? values.each do |key, value| member_name, member_ref = shape.member_by_location_name(key) if member_ref target[member_name] = parse_ref(member_ref, value) elsif shape.union target[:unknown] = { 'name' => key, 'value' => value } end end if shape.union # convert to subclass member_subclass = shape.member_subclass(target.member).new member_subclass[target.member] = target.value target = member_subclass end target end
time(value)
click to toggle source
@param [String, Integer] value @return [Time]
# File lib/aws-sdk-core/json/parser.rb, line 78 def time(value) value.is_a?(Numeric) ? Time.at(value) : Time.parse(value) end