hopsoft/field_mapper

View on GitHub
lib/field_mapper/marshaller.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "oj"

module FieldMapper
  module Marshaller

    OPTIONS = {
      indent: 0,
      circular: false,
      class_cache: true,
      escape: :json,
      time: :unix,
      create_id: "field_mapper_json_create"
    }

    def marshal(value)
      Oj.dump prep_value(value), OPTIONS
    end

    def unmarshal(value)
      Oj.load value, OPTIONS
    end

    private

    def prep_value(value)
      return value.map { |v| prep_value v } if value.is_a?(Array)
      return value.to_hash if value.is_a?(HashWithIndifferentAccess)
      value
    end

  end
end