gpt4 book ai didi

swift - 强制小写 swift 类的所有属性键和值

转载 作者:可可西里 更新时间:2023-11-01 01:07:21 26 4
gpt4 key购买 nike

我需要将一个类的所有键及其值转换为小写。例如,

class Person : Encodable {
var firstName: String
var lastName: String
var city: String
}

var person = Person(firstName: "David", lastName: "Gill", city:
"Toronto")
let encoder = JSONEncoder()
encoder.keyEncodingStrategy = .convertToLowerCase
let encoded = try encoder.encode(person)
print(String(decoding: encoded, as: UTF8.self))

其中 convertToLowerCase 是我在 JSONEncoder.KeyEncodingStrategy 的扩展中添加的方法,用于将键转换为小写。

它打印 - {"city":"Toronto","firstname":"David","lastname":"Gill"}

我需要打印的是 - {"city":"toronto","firstname":"david","lastname":"gill"}

有人可以帮忙吗?

最佳答案

像这样:

struct Person : Codable {
var firstName: String
var lastName: String
var city: String
enum CodingKeys : String, CodingKey {
case firstName = "firstname"
case lastName = "lastname"
case city
}
func encode(to encoder: Encoder) throws {
var con = encoder.container(keyedBy: CodingKeys.self)
try! con.encode(self.firstName.lowercased(), forKey: .firstName)
try! con.encode(self.lastName.lowercased(), forKey: .lastName)
try! con.encode(self.city.lowercased(), forKey: .city)
}
}

测试它:

let person = Person(firstName: "David", lastName: "Gill", city:
"Toronto")
let encoder = JSONEncoder()
let encoded = try encoder.encode(person)
print(String(decoding: encoded, as: UTF8.self))
// {"firstname":"david","lastname":"gill","city":"toronto"}

您可能可以合并您的 .convertToLowerCase 以节省一些工作。

关于swift - 强制小写 swift 类的所有属性键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55818468/

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