json - 如何使用来自 API 调用的动态变量解码嵌套的 JSON 结构

标签 json swift codable

调用此特定 API 时,其中一个变量会根据结果发生变化。

例子:

{
    "map": {
        "1945206": {
            "installBaseNUMB": 0,
            "serialNumber": "KB1",
            ...
        }
    }
}

1945206 将更改为另一个数字,我不知道如何正确解码。

我的 Codable 结构如下:

struct Map: Codable {
    let the1945206: The1945206?

    enum CodingKeys: String, CodingKey {
        case the1945206 = "1945206"
    }
}

struct The1945206: Codable {
    let installBaseNUMB: Int?
    let serialNumber, woStatus: String?
    let workOrderNumber: Int?
    let woNotes: [String]?
    let woParts: [WoPart]?
}

如果 1945206 更改为另一个值,它将中断并且不会显示任何结果。如何在解码数据时使用动态变量?

最佳答案

你可以试试

struct Root : Codable {
   let map: [String:The1945206]
}

let res = try? JSONDecoder().decode(Root.self,from:data)
print(res?.map.values)

{
    "map": {
        "1945204": {
            "installBaseNUMB": 0,
            "serialNumber": "KB1",
            ...
        },
        "1945205": {
            "installBaseNUMB": 0,
            "serialNumber": "KB1",
            ...
        },
        "1945206": {
            "installBaseNUMB": 0,
            "serialNumber": "KB1",
            ...
        }
    }
}

关于json - 如何使用来自 API 调用的动态变量解码嵌套的 JSON 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53713021/

相关文章:

java - 可以通过 WebSocket 传递的最大数据量是多少?

PHP 对象到 JSON : How to create class that will have multiple recursive children?

Swift 1.2 向 URL 添加参数不起作用。早些时候工作完美

ios - 在 Swift 3 中设置动画背景颜色

ios - 如何将 CodingKeys 用于符合 Codable 协议(protocol)的枚举?

c# - 使用 propertyname.subname 创建 JObject

.net - Elasticsearch.Net 1.0.2 + NEST 1.0.2无法正常工作?

class - 在声明中或使用 init 初始化 Swift 类变量?

ios - 无法解码弱变量中的值

swift - 如何使用 codable 和 swift 递归解析 json