我有一个结构,可通过嵌套变量反映带有嵌套变量的JSON中的数据。
struct JsonReceived: Decodable {
let data: JsonReceivedData
}
struct JsonReceivedData: Decodable {
let key1: String?
let key2: String?
let key3: String?
let key4: String?
let key5: String?
}
然后我用JSONDecoder
对json进行编码,并将其数据发送到函数。
let res = try JSONDecoder().decode(JsonReceived.self, from: data)
self.addData(res.data.key1)
self.addData(res.data.key2)
self.addData(res.data.key3)
self.addData(res.data.key4)
self.addData(res.data.key5)
问题是,有时JSON数据看起来像这样
{
"data": {
"key1": "value1",
"key3": "value3",
"key5": null,
}
}
并且如果密钥不存在,我也不想从函数发送数据,
[正如您在我的JSON示例中所看到的,没有key2
和key4
键值对,因此我不想将它们发送给该函数,key5
为空,但仍然具有键,因此即使它为null,我也希望它发送到该函数。
我希望输出将是这样。
if isHaveAkeyFromJSON(res.data.key2) {
self.addData(res.data.key2)
}
res
不知道它是如何创建的。具有值的键具有价值,没有值的键具有价值。如果您需要该信息,则需要再次查看接收JSON。
let testDictionary = try decoder.decode([String: String?].self, from: data)
然后测试字典中的密钥:
if testDictionary.keys.contains(res.key2) {
self.addData(res.key2)
}