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