我在创建一个结构来解析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的值?
答案 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对象具有相同的结构和相同的键名,则它将只有一个模型