使用 Swift 5 和 Codable 解码 json 中的字典
Decode a dictionary in json using Swift 5 and Codable
我正在尝试使用 Swift 5.2 和 Codable 解码 JSON(其中字典中的值对象不相似)中的数据,任何关于执行此操作的建议,代码将是易于扩展,可以在 json?
中添加更多食物
{
"main courses": [
{
"date availabiliy": "June 12, 2017 1:23:31 PM",
"price": 10.29,
"name": "chicken_rice",
"receipe": "page 16"
},
{
"date availabiliy": "July 12, 2017 1:23:31 PM",
"price": 12.29,
"name": "beef_rice",
"receipe": "page 5"
},
{
"date availabiliy": "July 12, 2017 1:23:31 PM",
"price": 14.49,
"name": "California roll",
"receipe": "page 25"
}
],
"desserts": [
{
"popularity": 75,
"calory": "high",
"name": "Avacado, Basil,and cream",
"date availabiliy": "July 12, 2017 1:23:31 PM",
"taste": "sweet",
},
{
"popularity": 39,
"calory": "med",
"name": "ice cream",
"date availabiliy": "July 22, 2017 1:23:31 PM",
"taste": "sweet",
},
],
}
谢谢!
凸轮
此模型创建自 https://app.quicktype.io/
import Foundation
// MARK: - Response
struct Response: Codable {
let mainCourses: [MainCourse]
let desserts: [Dessert]
enum CodingKeys: String, CodingKey {
case mainCourses = "main courses"
case desserts = "desserts"
}
}
// MARK: - Dessert
struct Dessert: Codable {
let popularity: Int
let calory, name, dateAvailabiliy, taste: String
enum CodingKeys: String, CodingKey {
case popularity, calory, name
case dateAvailabiliy = "date availabiliy"
case taste
}
}
// MARK: - MainCourse
struct MainCourse: Codable {
let dateAvailabiliy: String
let price: Double
let name, receipe: String
enum CodingKeys: String, CodingKey {
case dateAvailabiliy = "date availabiliy"
case price, name, receipe
}
}
像这样使用它
let response = try? newJSONDecoder().decode(Response.self, from: jsonData)
我正在尝试使用 Swift 5.2 和 Codable 解码 JSON(其中字典中的值对象不相似)中的数据,任何关于执行此操作的建议,代码将是易于扩展,可以在 json?
中添加更多食物{
"main courses": [
{
"date availabiliy": "June 12, 2017 1:23:31 PM",
"price": 10.29,
"name": "chicken_rice",
"receipe": "page 16"
},
{
"date availabiliy": "July 12, 2017 1:23:31 PM",
"price": 12.29,
"name": "beef_rice",
"receipe": "page 5"
},
{
"date availabiliy": "July 12, 2017 1:23:31 PM",
"price": 14.49,
"name": "California roll",
"receipe": "page 25"
}
],
"desserts": [
{
"popularity": 75,
"calory": "high",
"name": "Avacado, Basil,and cream",
"date availabiliy": "July 12, 2017 1:23:31 PM",
"taste": "sweet",
},
{
"popularity": 39,
"calory": "med",
"name": "ice cream",
"date availabiliy": "July 22, 2017 1:23:31 PM",
"taste": "sweet",
},
],
}
谢谢! 凸轮
此模型创建自 https://app.quicktype.io/
import Foundation
// MARK: - Response
struct Response: Codable {
let mainCourses: [MainCourse]
let desserts: [Dessert]
enum CodingKeys: String, CodingKey {
case mainCourses = "main courses"
case desserts = "desserts"
}
}
// MARK: - Dessert
struct Dessert: Codable {
let popularity: Int
let calory, name, dateAvailabiliy, taste: String
enum CodingKeys: String, CodingKey {
case popularity, calory, name
case dateAvailabiliy = "date availabiliy"
case taste
}
}
// MARK: - MainCourse
struct MainCourse: Codable {
let dateAvailabiliy: String
let price: Double
let name, receipe: String
enum CodingKeys: String, CodingKey {
case dateAvailabiliy = "date availabiliy"
case price, name, receipe
}
}
像这样使用它
let response = try? newJSONDecoder().decode(Response.self, from: jsonData)