使用SwiftyJson iOS解码嵌套Json和缺少的对象
我调用此api以接收单火箭发射事件: 使用简单的Get请求。 尝试使用SwiftyJson进行解码也尝试了Codable,但没有成功读取rocket->imageURL 这是我的密码:使用SwiftyJson iOS解码嵌套Json和缺少的对象,ios,swifty-json,codable,Ios,Swifty Json,Codable,我调用此api以接收单火箭发射事件: 使用简单的Get请求。 尝试使用SwiftyJson进行解码也尝试了Codable,但没有成功读取rocket->imageURL 这是我的密码: struct LaunchHistory { var launches = [LaunchItem]() init(with json:JSON) { for launch in json["launches"].arrayValue { let launchItem = LaunchI
struct LaunchHistory {
var launches = [LaunchItem]()
init(with json:JSON) {
for launch in json["launches"].arrayValue {
let launchItem = LaunchItem(with: launch)
launches.append(launchItem)
}
}
}
struct LaunchItem {
let id:Int?
let name: String?
let tbddate: Int?
let status: LaunchStatus?
let rocketImage: String?
init(with json:JSON) {
self.id = json["id"].int
self.name = json["name"].string
self.tbddate = json["tbddate"].int
self.status = LaunchStatus(rawValue: json["status"].int ?? 0)
self.rocketImage = json["rocket"]["imageURL"].string
}
}
当LaunchItem解码时,所有i 11属性/键几乎都是双倍的。
火箭物体不见了。
我错过了什么
谢谢 使用可解码的
你可以点击这个链接[看起来和我没有添加的可编码部分差不多,但它是有效的:谢谢你的帮助。我会试着看看它们的区别
struct Root : Decodable {
let launches : [LaunchItem]
}
struct LaunchItem : Decodable {
let id: Int
let name: String
let tbddate: Int
let rocket: Rocket
}
struct Rocket : Decodable {
let imageURL : URL
}
let url = URL(string: "https://launchlibrary.net/1.4/launch/next/1")!
let task = URLSession.shared.dataTask(with: url) { (data, _, error) in
if let error = error { print(error); return }
do {
let result = try JSONDecoder().decode(Root.self, from: data!)
print(result.launches.first?.rocket.imageURL ?? "n/a")
} catch {
print(error)
}
}
task.resume()