     @discardableResult
     public func responseJSONDecodable<T: Decodable>(
         queue: DispatchQueue? = nil,
-        keyPath: String? = nil,
+        decoder: JSONDecoder? = JSONDecoder(),
         completionHandler: @escaping (DownloadResponse<T>) -> Void)
         -> Self
     {
         return response(
             queue: queue,
-            responseSerializer: DownloadRequest.JSONDecodableResponseSerializer(keyPath: keyPath),
+            responseSerializer: DownloadRequest.JSONDecodableResponseSerializer(decoder: decoder),
             completionHandler: completionHandler
         )
     }

    @discardableResult
    public func responseJSONDecodable<T: Decodable>(
        queue: DispatchQueue? = nil,
        keyPath: String? = nil,
        completionHandler: @escaping (DataResponse<T>) -> Void)
        -> Self
    {
        return response(
            queue: queue,
            responseSerializer: DataRequest.JSONDecodableResponseSerializer(keyPath: keyPath),
            completionHandler: completionHandler
        )
    }


import Foundation
import Alamofire

class RequestJSONDecodableResponseSerializer {
    /// Returns a JSON object contained in a result type constructed from the response data using `JSONSerialization`
