mirror of
https://github.com/bitwarden/ios.git
synced 2025-12-11 13:54:06 -06:00
40 lines
1000 B
Swift
40 lines
1000 B
Swift
import Foundation
|
|
|
|
extension JSONDecoder.KeyDecodingStrategy {
|
|
static var upperToLowerCamelCase: JSONDecoder.KeyDecodingStrategy {
|
|
.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) {
|
|
stringValue = "\(intValue)"
|
|
self.intValue = intValue
|
|
}
|
|
|
|
init(stringValue: String, intValue: Int?) {
|
|
self.stringValue = stringValue
|
|
self.intValue = intValue
|
|
}
|
|
}
|