SWIFT 4嵌套JSON Struct - Codable

时间:2017-12-08 19:43:58

标签: json swift4 codable

我在创建一个结构来解析Swift 4中的JSON时遇到了问题。我能够解析小JSON并且JSONDecoder似乎工作正常。只需要帮助来创建一个结构来解析JSON,就像那样:

{
    "main": {
        "solutions": [
                    {
                    "exersises": [
                                     {
                                     "book_title": "test",
                                     "release_date": "2015-01-12T11:00",
                                     "price": 100,
                                     "additional": [
                                                   {
                                                   "item1": "test",
                                                   "item2": "test",
                                                   "number": 1
                                                   },
                                                   {
                                                    "item1": "test2",
                                                    "item2": "test2",
                                                    "number": 2
                                                   }
                                                   ],
                                     "availability": "Yes",
                                     "item_id": 43534
                                     }
                                     ]


                    }

                    ]
    }
}

例如,我需要什么样的结构才能获得book_title的值?

2 个答案:

答案 0 :(得分:1)

真的很容易。你的主要探测器很可能是根元素。让我为你准备第一层或第二层。

let decoded = try JSONDecoder().decode(MainJSON.self, from: data)

class MainJSON: Codable {
    var main:SolutionJSON?
}

class SolutionJSON: Codable {
    var exercises:[ExercisesJSON]?
}

class ExercisesJSON: Codable {
    var bookTitle: String?
    var releaseDate: String?
    var price: Double?
    ... etc

    enum CodingKeys: String, CodingKey {
        case bookTitle = "book_title"
        case releaseDate = "release_date"
        case price = "price"
    }
}

ExerciseJSON还使用Codable接口,如果它们不匹配,可以将json属性重新映射到swift属性。希望这会有所帮助。

答案 1 :(得分:-2)

我更愿意为这种情况提供一般解决方案

只需从GITHUB下载并运行此MACOS APP即可 通过XCODE在你的mac中运行它,但你的JSON在其中, 它将为任何复杂的JSON制作模型

备注

1如果JSON键在第一个中具有大写字符,那么它将很小 ,因此在复制模型后,您需要像JSON一样更改它

2如果两个JSON对象具有相同的结构和相同的键名,则它将只有一个模型