class Aws::Json::Parser

def initialize(rules)

Parameters:
  • rules (Seahorse::Model::ShapeRef) --
def initialize(rules)
  @rules = rules
end

def list(ref, values, target = nil)

def list(ref, values, target = nil)
  target = [] if target.nil?
  values.each do |value|
    target << parse_ref(ref.shape.member, value)
  end
  target
end

def map(ref, values, target = nil)

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

def parse(json, target = nil)

Parameters:
  • json (String) --
def parse(json, target = nil)
  parse_ref(@rules, Json.load(json), target)
end

def parse_ref(ref, value, target = nil)

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

def structure(ref, values, target = nil)

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

def time(value)

Returns:
  • (Time) -

Parameters:
  • value (String, Integer) --
def time(value)
  value.is_a?(Numeric) ? Time.at(value) : Time.parse(value)
end