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
# 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)

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

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