Sha256: 86aaa0c5ef8fe3c5bda6225c81f6606d7d2f2f76f17749bc2fe50e4b1c27a9e6

Contents?: true

Size: 834 Bytes

Versions: 1

Compression:

Stored size: 834 Bytes

Contents

# Add a formatter to grape that converts all snake case hash keys from ruby to camel case.
require 'camel_snake_keys'
require 'grape/formatter/json'
module IntrospectiveGrape
  module Formatter
    module CamelJson
      def self.call(object, _env)
        if object.respond_to?(:to_json) && !object.respond_to?(:with_camel_keys) &&
          (parsed_object = JSON.parse(object.to_json)).respond_to?(:with_camel_keys)
          object = parsed_object
				elsif object.kind_of?(Array) && object.first.kind_of?(Grape::Entity)
        	# Force arrays of Grape::Entities into their hash representations before camelizing
        	object = JSON.parse(object.to_json) 
        end
        object = object.with_camel_keys if object.respond_to?(:with_camel_keys)

        Grape::Formatter::Json.call(object, _env)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
introspective_grape-0.3.2 lib/introspective_grape/formatter/camel_json.rb