Я анализирую URL, который возвращает данные в формате массива, как показано ниже:
[
{"_id":"5bb8b6038fb09210e09fd5c6","name":"John","city":"Dallas","country":"USA","__v":0},{"_id":"5bb8b6258fb09210e09fd5c7","name":"Robert","city":"SFO","country":"USA","__v":0}
]
Я написал класс модели, как показано ниже:
class Peoples: Codable{
let peoples:[People]
init(peoples:[People]) {
self.peoples = peoples
}
}
class People: Codable{
var _id : String
var name : String
var city : String
var country : String
var __v : Int
init(
_id : String,
name : String,
city : String,
country : String,
__v : Int
)
{
self._id = _id
self.name = name
self.city = city
self.country = country
self.__v = __v
}
}
И я анализирую данные JSONиспользуя JSONDecoder.
class HomeTabController: UIViewController ,UITableViewDataSource,UITableViewDelegate {
private var varPeoples= [People]()
override func viewDidLoad() {
super.viewDidLoad()
guard let url = URL(string: “<SomeURL>“)else {return}
guard let downloadURL = url else { return }
URLSession.shared.dataTask(with: downloadURL) { data, urlResponse, error in
guard let data = data, error == nil, urlResponse != nil
else
{
print( "Something is wrong in URL")
return;
}
print(data)
do{
let pplList= JSONDecoder().decode(Peoples.self, from: data). // This line is giving data incorrect format error.
self.varPeoples = pplList.peoples
DispatchQueue.main.async{
self.tableView.reloadData()
}
}catch{
print( error.localizedDescription)
}
}
}
Если данные JSON не имеют массива [], я могу их проанализировать.Но мой URL возвращает данные с символом array [].Так что любой может исправить код.