class Aws::Json::Parser

Public Instance Methods

parse(shape, json, target = nil) click to toggle source

@param [Seahorse::Model::Shapes::Shape] shape @param [String<JSON>] json @param [Hash, Array, nil] target @return [Hash]

# File lib/aws-sdk-core/json/parser.rb, line 12
def parse(shape, json, target = nil)
  parse_shape(shape, MultiJson.load(json, max_nesting: false), target)
end

Private Instance Methods

list(list, values, target = nil) click to toggle source

@param [Seahorse::Model::Shapes::List] list @param [Array] values @param [Array, nil] target @return [Array]

# File lib/aws-sdk-core/json/parser.rb, line 37
def list(list, values, target = nil)
  target = [] if target.nil?
  values.each { |value| target << parse_shape(list.member, value) }
  target
end
map(map, values, target = nil) click to toggle source

@param [Seahorse::Model::Shapes::Map] map @param [Hash] values @return [Hash]

# File lib/aws-sdk-core/json/parser.rb, line 46
def map(map, values, target = nil)
  target = {} if target.nil?
  values.each do |key, value|
    target[key] = parse_shape(map.value, value)
  end
  target
end
parse_shape(shape, value, target = nil) click to toggle source

@param [Seahorse::Model::Shapes::Shape] shape @param [Object] value @param [Hash, Array, nil] target @return [Object]

# File lib/aws-sdk-core/json/parser.rb, line 58
def parse_shape(shape, value, target = nil)
  if value.nil?
    nil
  else
    case shape
    when Seahorse::Model::Shapes::Structure then structure(shape, value, target)
    when Seahorse::Model::Shapes::List then list(shape, value, target)
    when Seahorse::Model::Shapes::Map then map(shape, value, target)
    when Seahorse::Model::Shapes::Timestamp then time(value)
    when Seahorse::Model::Shapes::Blob then Base64.decode64(value)
    when Seahorse::Model::Shapes::Boolean then value.to_s == 'true'
    else value
    end
  end
end
structure(structure, values, target = nil) click to toggle source

@param [Seahorse::Model::Shapes::Structure] structure @param [Hash] values @param [Hash, nil] target @return [Struct]

# File lib/aws-sdk-core/json/parser.rb, line 22
def structure(structure, values, target = nil)
  target = Structure.new(structure.member_names) if target.nil?
  values.each do |serialized_name, value|
    member_name, shape = structure.member_by_location_name(serialized_name)
    if shape
      target[member_name] = parse_shape(shape, 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 76
def time(value)
  value.is_a?(Numeric) ? Time.at(value) : Time.parse(value)
end