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 11 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 16 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 34 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 42 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 50 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 22 def structure(ref, values, target = nil) shape = ref.shape target = ref[: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) end end target end
time(value)
click to toggle source
@param [String, Integer] value @return [Time]
# File lib/aws-sdk-core/json/parser.rb, line 68 def time(value) value.is_a?(Numeric) ? Time.at(value) : Time.parse(value) end