簡體   English   中英

SWIFT 4嵌套JSON結構-可編碼

[英]SWIFT 4 nested JSON Struct - 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的值?

真的很簡單。 您的主要探查很可能是根元素。 讓我為您准備第一層或第二層。

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屬性。 希望這可以幫助。

我更願意給出一個通用的解決方案,不僅針對這種情況

非常簡單,只需從GITHUB下載並運行此MACOS APP ,即可通過XCODE在Mac中運行它,但其中包含JSON,
它將為任何復雜的JSON制作模型

筆記

1如果JSON密鑰的首字母大寫,則該字符將很小,因此在復制模型后,您需要像JSON一樣對其進行更改

2如果兩個JSON對象具有相同的結構和相同的鍵名,則它將只是一個模型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM