Class: Grape::Validations::Types::Json

Inherits:
Object
  • Object
show all
Defined in:
lib/grape/validations/types/json.rb

Overview

Handles coercion and type checking for parameters that are complex types given as JSON-encoded strings. It accepts both JSON objects and arrays of objects, and will coerce the input to a +Hash+ or +Array+ object respectively. In either case the Grape validation system will apply nested validation rules to all returned objects.

Direct Known Subclasses

JsonArray

Class Method Summary collapse

Class Method Details

.parse(input) ⇒ Hash, ...

Coerce the input into a JSON-like data structure.

Parameters:

  • input (String)

    a JSON-encoded parameter value

Returns:

  • (Hash, Array<Hash>, nil)


20
21
22
23
24
25
26
27
# File 'lib/grape/validations/types/json.rb', line 20

def parse(input)
  return input if parsed?(input)

  # Allow nulls and blank strings
  return if input.nil? || input.match?(/^\s*$/)

  JSON.parse(input, symbolize_names: true)
end

.parsed?(value) ⇒ true, false

Checks that the input was parsed successfully and isn't something odd such as an array of primitives.

Parameters:

  • value (Object)

    result of #parse

Returns:

  • (true, false)


34
35
36
# File 'lib/grape/validations/types/json.rb', line 34

def parsed?(value)
  value.is_a?(::Hash) || coerced_collection?(value)
end