class IknowParams::Serializer::JsonWithSchema
Abstract serializer for JSON structures conforming to a specified schema.
Adds Rails
conveniences
Attributes
schema[R]
Public Class Methods
new(schema, validate_schema: true)
click to toggle source
Calls superclass method
IknowParams::Serializer::new
# File lib/iknow_params/serializer.rb, line 253 def initialize(schema, validate_schema: true) @schema = schema @validate_schema = validate_schema super(nil) end
Public Instance Methods
dump(val, json: false)
click to toggle source
# File lib/iknow_params/serializer.rb, line 267 def dump(val, json: false) matches_type!(val) if json val else JSON.dump(val) end end
load(structure)
click to toggle source
# File lib/iknow_params/serializer.rb, line 259 def load(structure) structure = JSON.parse(structure) if structure.is_a?(::String) matches_type!(structure, err: LoadError) structure rescue JSON::ParserError => ex raise LoadError.new("Invalid JSON: #{ex.message}") end
matches_type?(val)
click to toggle source
# File lib/iknow_params/serializer.rb, line 276 def matches_type?(val) JSON::Validator.validate(schema, val, validate_schema: @validate_schema) end