首页 > 解决方案 > 在 Swift 中解码类别数组的正确方法是什么

问题描述

例如,我有

[{
    "name": "Afghanistan",
    "numericCode": "004",
    "altSpellings": ["AF", "Afġānistān"],
    "currencies": [{
        "code": "AFN",
        "name": "Afghan afghani",
        "symbol": "؋"
    }]
},
...

要获得“altSpellings”和“currencies”,我将如何构建我的模型?

struct WorldData: Identifiable, Decodable {
    var id: String {
        return numericCode
    }
    var name: String
    var numericCode : String
    var altSpellings : Array
    var currencies : ???
}

并且,如果我的 API 对象没有 ID,会不会是:

var id: ObjectIdentifier

谢谢!

标签: jsonswiftapi

解决方案


Currency为and创建另一个结构currencies,因为altSpellings它只是[String].

struct WorldData: Identifiable, Decodable {
    let name, numericCode: String
    let altSpellings: [String]
    let currencies: [Currency]

    var id: String {
        return numericCode
    }
}

struct Currency: Decodable {
    let code, name, symbol: String
}

然后使用解码[WorldData]

do {
    let decodedWorldData = try JSONDecoder().decode([WorldData].self, from: data)
    print(decodedWorldData)
} catch {
    print(error)
}

推荐阅读