[英]not able to decode json in swift
這是 http 客戶端,打印字符串時響應正確,但在嘗試解碼時顯示轉換錯誤
let task = URLSession.shared.dataTask(with: request){ (data, response, error) in
// Check for Error
if let error = error {
print("Error took place \(error)")
return
}
do{
let imageData = try JSONDecoder().decode(ImageDataModel.self,
from: data!)
print(imageData)
}catch{
print("conversion error")
}
}
這是用來解碼的數據model
struct ImageDataModel: Decodable,Identifiable {
var id = UUID()
var created: Int
var data:Array<ImageData>
struct ImageData: Decodable,Identifiable {
var id = UUID()
var url: String
}
init(created: Int, data: [ImageData]) {
self.created = created
self.data = data
}
}
回應是
{
"created": 1670598580,
"data": [
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-t0OU052mWtWLkmxpWHfSoME9/user-mgq3wJsAIptbbj1l0yI0YIS4/img-WafK921SOTYJSY0oub4e0z4f.png?st=2022-12-09T14%3A09%3A40Z&se=2022-12-09T16%3A09%3A40Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-09T01%3A07%3A28Z&ske=2022-12-10T01%3A07%3A28Z&sks=b&skv=2021-08-06&sig=McfqQuL5FZ%2B0Ow1qms3i3phdYMZjmxcoNcfr4/7/XPk%3D"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-t0OU052mWtWLkmxpWHfSoME9/user-mgq3wJsAIptbbj1l0yI0YIS4/img-FgLNjPkxOcKk0wOz5pGKYO5c.png?st=2022-12-09T14%3A09%3A40Z&se=2022-12-09T16%3A09%3A40Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-09T01%3A07%3A28Z&ske=2022-12-10T01%3A07%3A28Z&sks=b&skv=2021-08-06&sig=h72lRrBUed0HKHkS3QEHy2RzfM65xbwtlJMM1NGK9w0%3D"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-t0OU052mWtWLkmxpWHfSoME9/user-mgq3wJsAIptbbj1l0yI0YIS4/img-mV5jtC9UQatb3zoDVG8lQw4u.png?st=2022-12-09T14%3A09%3A40Z&se=2022-12-09T16%3A09%3A40Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-09T01%3A07%3A28Z&ske=2022-12-10T01%3A07%3A28Z&sks=b&skv=2021-08-06&sig=pYrewa9h/B0gzOp7NwfzYwjdVlG4%2BwkpJCXdzuEw9HY%3D"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-t0OU052mWtWLkmxpWHfSoME9/user-mgq3wJsAIptbbj1l0yI0YIS4/img-PjwW7ctrLEjFkIuctE71V2jj.png?st=2022-12-09T14%3A09%3A40Z&se=2022-12-09T16%3A09%3A40Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-09T01%3A07%3A28Z&ske=2022-12-10T01%3A07%3A28Z&sks=b&skv=2021-08-06&sig=Mznigp33qXj1f2yO1kUfxiwJOG2XiAfKpXdBQBavu8Q%3D"
},
{
"url": "https://oaidalleapiprodscus.blob.core.windows.net/private/org-t0OU052mWtWLkmxpWHfSoME9/user-mgq3wJsAIptbbj1l0yI0YIS4/img-3vZsW3Tr82PELAH2QDnGz2im.png?st=2022-12-09T14%3A09%3A40Z&se=2022-12-09T16%3A09%3A40Z&sp=r&sv=2021-08-06&sr=b&rscd=inline&rsct=image/png&skoid=6aaadede-4fb3-4698-a8f6-684d7786b067&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skt=2022-12-09T01%3A07%3A28Z&ske=2022-12-10T01%3A07%3A28Z&sks=b&skv=2021-08-06&sig=cIwENFt/fWP12wLtr%2BNQks6OuCgB%2BZORsT6dxHbk7ys%3D"
}
]
}
我期望將收到的 json 存儲到結構中
錯誤很明顯:
沒有與鍵關聯的值 CodingKeys(stringValue: "id", intValue: nil)
您聲明了一個id
屬性,但 JSON 中沒有密鑰id
。
基本上有兩種選擇:
將id
聲明為常量。 無論如何聲明一個唯一標識符可變是沒有意義的
let id = UUID()
您將收到警告,但可以忽略。
指定顯式CodingKeys
省略id
struct ImageDataModel: Decodable, Identifiable { private enum CodingKeys: String, CodingKey { case created, data} let id = UUID() var created: Int var data: Array<ImageData> struct ImageData: Decodable, Identifiable { private enum CodingKeys: String, CodingKey { case url }...
旁注:切勿在catch
塊中只打印無意義的文字字符串。 總是至少打印error
實例
} catch {
print("conversion error", error)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.