class Grape::Validations::Types::Json
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.
Public Class Methods
Source
# File lib/grape/validations/types/json.rb, line 18 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
Coerce the input into a JSON-like data structure.
@param input [String] a JSON-encoded parameter value @return [Hash,Array<Hash>,nil]
Source
# File lib/grape/validations/types/json.rb, line 32 def parsed?(value) value.is_a?(::Hash) || coerced_collection?(value) end
Checks that the input was parsed successfully and isn’t something odd such as an array of primitives.
@param value [Object] result of {#parse} @return [true,false]
Protected Class Methods
Source
# File lib/grape/validations/types/json.rb, line 42 def coerced_collection?(value) value.is_a?(::Array) && value.all?(::Hash) end
Is the value an array of JSON-like objects?
@param value [Object] result of {#parse} @return [true,false]