Skip to content

Instantly share code, notes, and snippets.

@swiftyfinch
Last active June 20, 2020 17:35
Show Gist options
  • Save swiftyfinch/0b0689b2baf477b607282dd8be1701ea to your computer and use it in GitHub Desktop.
Save swiftyfinch/0b0689b2baf477b607282dd8be1701ea to your computer and use it in GitHub Desktop.
struct WithoutEscapingSlashesEncoder {
private enum EncoderError: InternalError {
case dataToUTF8
case utf8ToData
}
func encode<T: Encodable>(_ object: T) throws -> Data {
let jsonEncoder = JSONEncoder()
if #available(iOS 13, *) {
jsonEncoder.outputFormatting = .withoutEscapingSlashes
return try jsonEncoder.encode(object)
} else {
let data = try jsonEncoder.encode(object)
guard let string = String(data: data, encoding: .utf8)
else { throw EncoderError.dataToUTF8 }
let fixedString = string.replacingOccurrences(of: "\\/", with: "/")
guard let fixedData = fixedString.data(using: .utf8)
else { throw EncoderError.utf8ToData }
return fixedData
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment