gpt4 book ai didi

ios - 将 Codable/Encodable 快速转换为 JSON 对象

转载 作者:行者123 更新时间:2023-12-01 17:46:39 25 4
gpt4 key购买 nike

最近我注册了Codable在一个项目中并获得 JSON来自符合 Encodable 的类型的对象我想出了这个扩展,

extension Encodable {

/// Converting object to postable JSON
func toJSON(_ encoder: JSONEncoder = JSONEncoder()) -> [String: Any] {
guard let data = try? encoder.encode(self),
let object = try? JSONSerialization.jsonObject(with: data, options: .allowFragments),
let json = object as? [String: Any] else { return [:] }
return json
}
}

这很好用,但有没有更好的方法来达到同样的效果?

最佳答案

我的建议是将函数命名为 toDictionary并将可能的错误交给调用者。在 typeMismatch 中抛出有条件的向下转换失败(类型不匹配)。 编码错误。

extension Encodable {

/// Converting object to postable dictionary
func toDictionary(_ encoder: JSONEncoder = JSONEncoder()) throws -> [String: Any] {
let data = try encoder.encode(self)
let object = try JSONSerialization.jsonObject(with: data)
guard let json = object as? [String: Any] else {
let context = DecodingError.Context(codingPath: [], debugDescription: "Deserialized object is not a dictionary")
throw DecodingError.typeMismatch(type(of: object), context)
}
return json
}
}

关于ios - 将 Codable/Encodable 快速转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52922889/

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