SWIFT 4 嵌套 JSON 结构 - Codable
SWIFT 4 nested JSON Struct - Codable
我在创建一个结构来解析 Swift 中的 JSON 时遇到问题 4。我能够解析小的 JSONs 并且 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
运行 它在你的 mac 中 XCODE 但你的 JSON 在它里面,
它将为任何复杂的 JSON
制作模型
笔记
1 如果 JSON 键的第一个字符是大写的,它将变小
, 所以在复制模型后你需要像 JSON
一样改变它
2 如果两个 JSON 对象具有相同的结构和相同的键名,则只有一个模型
我在创建一个结构来解析 Swift 中的 JSON 时遇到问题 4。我能够解析小的 JSONs 并且 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
运行 它在你的 mac 中 XCODE 但你的 JSON 在它里面,
它将为任何复杂的 JSON
笔记
1 如果 JSON 键的第一个字符是大写的,它将变小 , 所以在复制模型后你需要像 JSON
一样改变它2 如果两个 JSON 对象具有相同的结构和相同的键名,则只有一个模型