gpt4 book ai didi

json - 如何确保所有 JSON 字段都呈现在 Swift Decodable 模型中?

转载 作者:搜寻专家 更新时间:2023-11-01 06:50:19 25 4
gpt4 key购买 nike

让我们想象一个第三方 JSON API 返回这样一个模型:

{
"key1": "Hello"
}

所以我们描述如下:

struct Model: Codable {
var key1: String
}

最终 JSON 模型获得了一个新字段......

{
"key1": "Hello",
"key2": {
"key3": "World"
}
}

…旧的 Model 仍然有效,但它缺少一个新属性 key2

有什么方法可以验证所有 JSON key 是否都出现在 Decodable 模型中?

最佳答案

这是一种方法,通过使用 JSONSerialization 获取 json 消息中的所有键,然后使用反射将它们与解析数据中的键进行比较

此代码仅比较计数,更彻底的检查应该验证每个单独的 key

do {
let dictionary = try JSONSerialization.jsonObject(with: data) as? [String: Any]
let result = try JSONDecoder().decode(Model.self, from: data)
if let keys = dictionary?.keys {
let mirror = Mirror(reflecting: result)
if keys.count != mirror.children.count {
print("Wrong number of keys")
//throw SomeError
}
}
//handle result
} catch {
print(error)
}

关于json - 如何确保所有 JSON 字段都呈现在 Swift Decodable 模型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794076/

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