module JMESPath::Util

def as_json(value)

def as_json(value)
  if value.respond_to?(:to_ary)
    value.to_ary.map { |e| as_json(e) }
  elsif value.respond_to?(:to_hash)
    hash = {}
    value.to_hash.each_pair { |k, v| hash[k] = as_json(v) }
    hash
  elsif value.respond_to?(:to_str)
    value.to_str
  else
    value
  end
end