gpt4 book ai didi

json - 遍历自定义对象的属性

转载 作者:行者123 更新时间:2023-11-28 05:52:58 26 4
gpt4 key购买 nike

我有一个结构如下的 JSON 响应:

{
"id": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": false
},
"key1": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": true
},
"key2": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": false
},
"key3": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": true
},
"key4": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": false
},
"key5": {
"sub_key1": "sub_value1",
"sub_key2": "sub_value2",
"sub_key3": "sub_value3",
"used": true
}
}

我已经为它创建了 Swift 父子结构,如下所示:

家长:

struct Parent: Codable {
let id: Child?
let key1: Child?
let key2: Child?
let key3: Child?
let key4: Child?
let key5: Child?
}

child :

struct Child: Codable {
let sub_key1: String?
let sub_key2: String?
let sub_key3: String?
let used: Bool?
}

现在,只有部分 Child 对象被使用,具体取决于“已使用”属性,我想过滤掉未使用的 Child 对象。我考虑过使用 map方法,但这只适用于数组。

关于如何解决这个问题有什么想法吗?

最佳答案

我会像这样存储 Parent:

struct Parent {
let children: [String: Child]
}

这将允许您使用 parent.children.values.filter 过滤子项并为键添加一些动态。

作为旁注:

Swift 4.2 将允许您进行动态调用。这意味着您可以实现:

extension Parent {
subscript(dynamicMember member: String) -> Child? {
get {
return children[member]
}
set {
children[member] = newValue
}
}
}

这将允许您仍然调用 parent.key1parent.id 而不会失去可读性。

关于json - 遍历自定义对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52259908/

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