我們可以使 Codable 鍵不區分大小寫嗎?NOT VALUE 但 KEY ITSELF 需要不區分大小寫
struct Model: Codable, Equatable {
let number: String?
let id: String?
let address: String?
enum CodingKeys: String, CodingKey {
case number = "A-Number"
case id = "A-Id"
case address = "AddressId"
}
}
所以它適用于兩個json:
Sample Json 1
{
"A-Number" : "12345",
"A-Id" : "1",
"AddressId" : "3456"
}
Sample Json 2
{
"a-number" : "12345",
"a-id" : "1",
"addressid" : "3456"
}
uj5u.com熱心網友回復:
使用以下代碼將鍵設為小寫,以便您可以在應用程式中使用。注意:如果您想使用此解決方案,您的所有密鑰都將小寫。
struct AnyKey: CodingKey {
var stringValue: String
init?(stringValue: String) {
self.stringValue = stringValue
}
var intValue: Int? {
return nil
}
init?(intValue: Int) {
return nil
}
}
struct DecodingStrategy {
static var lowercase: ([CodingKey]) -> CodingKey {
return { keys -> CodingKey in
let key = keys.first!
let modifiedKey = key.stringValue.prefix(1).lowercased() key.stringValue.dropFirst()
return AnyKey(stringValue: modifiedKey)!
}
}
}
要使用這個:
let jsonDecoder = JSONDecoder()
jsonDecoder.keyDecodingStrategy = .custom(DecodingStrategy.lowercase)
let dataModel = try jsonDecoder.decode(YourDataModel, from: yourdata)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476067.html