使用Decodable解码嵌套对象的数组

时间:2019-02-12 10:21:27

标签: ios swift decodable

几天前我开始使用Decodable,我想知道是否可以创建具有以下JSON的模型“ Car”而不创建其他模型:

{
    "cars": [
        {
            "id": 1,
            "name": "car1"
        },
        {
            "id": 2,
            "name": "car2"
        },
        {
            "id": 3,
            "name": "car3"
        }
    ],
    "pagination": {
        "page": 1,
        "offset": 20
    }
}

我发现的唯一解决方案是创建一个“包装程序”模型,如“响应”,其中包含[Cars]属性。

有人可以确认我仅使用“汽车”模型就可以解码此JSON吗?

谢谢。

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

您可以尝试

    let str = """

        {
        "cars": [
        {
        "id": 1,
        "name": "car1"
        },
        {
        "id": 2,
        "name": "car2"
        },
        {
        "id": 3,
        "name": "car3"
        }
        ],
        "pagination": {
        "page": 1,
        "offset": 20
        }
        }

    """


    do {

        let tr = try JSONSerialization.jsonObject(with: Data(str.utf8), options: []) as! [String:Any] 

        let da = try JSONSerialization.data(withJSONObject: tr["cars"]  , options: [])

        let res = try JSONDecoder().decode([Car].self, from: da)

        print(res)


    }
    catch {

        print(error)
    }

struct Car: Codable {
    let id: Int
    let name: String
}