I am using the Combine framework in my Swift project and I am struggling to convert from snake case.
I tried using this extension code
extension JSONDecoder {
static let snakeCaseConverting: JSONDecoder = {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
return decoder
}()
}
extension Publisher where Output == Data {
func decode<T: Decodable>(
as type: T.Type = T.self,
using decoder: JSONDecoder = .snakeCaseConverting
) -> Publishers.Decode<Self, T, JSONDecoder> {
decode(type: type, decoder: decoder)
}
}
But it is not working as expected
urlSession.dataTaskPublisher(for: urlRequest)
.tryMap() { element -> Data in
guard let response = element.response as? HTTPURLResponse else {
throw APIError.missingDataError
}
return element.data
}
.decode()
.eraseToAnyPublisher()
Any Suggestions?
Thanks!