Bitwarden-app-android-iphon.../src/watchOS/bitwarden/bitwarden WatchKit Extension/Utilities/JsonDecoderExtensions.swift

41 lines
1017 B
Swift

import Foundation
extension JSONDecoder.KeyDecodingStrategy {
static var upperToLowerCamelCase: JSONDecoder.KeyDecodingStrategy {
return .custom { codingKeys in
var key = JSONAnyCodingKey(codingKeys.last!)
if let firstChar = key.stringValue.first {
key.stringValue.replaceSubrange(
...key.stringValue.startIndex, with: String(firstChar).lowercased()
)
}
return key
}
}
}
struct JSONAnyCodingKey : CodingKey {
var stringValue: String
var intValue: Int?
init(_ base: CodingKey) {
self.init(stringValue: base.stringValue, intValue: base.intValue)
}
init(stringValue: String) {
self.stringValue = stringValue
}
init(intValue: Int) {
self.stringValue = "\(intValue)"
self.intValue = intValue
}
init(stringValue: String, intValue: Int?) {
self.stringValue = stringValue
self.intValue = intValue
}
}