gpt4 book ai didi

ios - 我们可以在 Swift 中使结构中的 Codable 键不区分大小写吗

转载 作者:行者123 更新时间:2023-12-05 01:23:34 25 4
gpt4 key购买 nike

我们可以让 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"
}

最佳答案

使用以下代码将键设为小写,以便您可以在整个应用程序中使用。注意:如果您想使用它们,您的所有键都将使用此解决方案小写。

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)

关于ios - 我们可以在 Swift 中使结构中的 Codable 键不区分大小写吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72257945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com