[英]create an array from JSON in swift
我正在嘗試將JSON數據轉換為數組,但是我真的不知道該怎么做。
我獲取數據並將其保存為字符串,也可以在顯示屏上顯示它。
struct User_Hosting: Codable {
let company_name: String
let website: String
let street: String
let housenumber: String
let zip: String
let city: String
enum CodingKeys: String, CodingKey {
case company_name = "company_name"
case website = "website"
case street = "street"
case housenumber = "housenumber"
case zip = "zip"
case city = "city"
}
}
還有其他一些代碼:
let url = URL(string: "myURL.com")
URLSession.shared.dataTask(with: url!, completionHandler: { [weak self] (data, response, error) in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "An error occurred")
return
}
DispatchQueue.main.async {
self?.dataSource = try! JSONDecoder().decode([User_Hosting].self, from: data)
}
}).resume()
}
您的CodingKeys
與屬性名稱匹配,因此您完全可以擺脫enum
struct UserHosting: Codable {
let companyName: String
let website: String
let street: String
let housenumber: String
let zip: String
let city: String
}
由於JSON中有一些蛇格鍵,因此您可以將JSONDecoder.keyDecodingStrategy更改為convertFromSnakeCase
,如下所示
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
上面的解碼器將把諸如company_name
鍵分配給您的結構的companyName
屬性。
最后,您可以在do-catch
塊中對JSON進行解碼,因此,如果發生錯誤,我們將收到一條有關錯誤原因的消息。
do {
self.dataSource = try decoder.decode([UserHosting].self, from: data)
} catch {
print("JSON Decoding Error \(error)")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.