class ActionDispatch::ParamsParser

def parse_formatted_parameters(env)

def parse_formatted_parameters(env)
  request = Request.new(env)
  return false if request.content_length.zero?
  mime_type = content_type_from_legacy_post_data_format_header(env) ||
    request.content_mime_type
  strategy = @parsers[mime_type]
  return false unless strategy
  case strategy
  when Proc
    strategy.call(request.raw_post)
  when :xml_simple, :xml_node
    data = Hash.from_xml(request.body.read) || {}
    request.body.rewind if request.body.respond_to?(:rewind)
    data.with_indifferent_access
  when :yaml
    YAML.load(request.raw_post)
  when :json
    data = ActiveSupport::JSON.decode(request.body)
    request.body.rewind if request.body.respond_to?(:rewind)
    data = {:_json => data} unless data.is_a?(Hash)
    data.with_indifferent_access
  else
    false
  end
rescue Exception => e # YAML, XML or Ruby code block errors
  logger(env).debug "Error occurred while parsing request parameters.\nContents:\n\n#{request.raw_post}"
  raise e
end