快速了解json键为空还是无键?

问题描述 投票:0回答:1

我有一个结构,可通过嵌套变量反映带有嵌套变量的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示例中所看到的,没有key2key4键值对,因此我不想将它们发送给该函数,key5为空,但仍然具有键,因此即使它为null,我也希望它发送到该函数。

我希望输出将是这样。

if isHaveAkeyFromJSON(res.data.key2) {
    self.addData(res.data.key2)
}
json swift struct key-value
1个回答
0
投票

res不知道它是如何创建的。具有值的键具有价值,没有值的键具有价值。如果您需要该信息,则需要再次查看接收JSON。

let testDictionary = try decoder.decode([String: String?].self, from: data)

然后测试字典中的密钥:

if testDictionary.keys.contains(res.key2) {
    self.addData(res.key2)
}
© www.soinside.com 2019 - 2024. All rights reserved.