ios/BitwardenWatchApp/Utilities/JsonDecoderExtensions.swift
2025-10-06 15:18:35 -05:00

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
}
}