Reputation: 745
I want to store the fetched JSON data to my model class array propertyArray. Some how I got the JSON data using Alamofire library and now I want to parse that data to the properties of PropertyList model class. I am not able to parse JSON data to propertyArray. I referred many other solutions to this question on stack overflow but did not get any appropriate solution.
Declared Model Class Array
var propertyArray: [PropertyList]? = []
Alamofire Function
func dataPass() {
print("Landlord id is \(land.id)")
let para: Parameters = ["id": land.id]
Alamofire.request(URL_Landlord_Property_List, method: .post, parameters: para).responseJSON { response in
if let dictionary = response.result.value as? [String : AnyObject]{
var prop = PropertyList()
let data = dictionary["data"] as! [Any]
print(data)
}
}
}
PropertyList
import Foundation
struct PropertyList{
var property_id: String?
var user_id: String?
var property_code: String?
var property_added_date: String?
var property_updated_date: String?
var property_termination_date: String?
var property_ASYS_no: String?
var propertyCode: String?
var property_address_1:String?
var property_address_2: String?
var property_address_3: String?
var property_city: String?
var property_cluster:String?
var property_area:String?
var property_postcode: String?
var property_landlord_ref_code: String?
var property_landlord_id: String?
}
JSON Data
{
"success": true,
"data": [
{
"property_id": "1",
"user_id": "1",
"property_code": "0001",
"property_added_date": "2017-12-13",
"property_updated_date": "2017-12-13 00:00:00",
"property_termination_date": null,
"property_ASYS_no": "ASYS 001",
"propertyCode": "0001-PUNE1",
"property_address_1": "PUNE1",
"property_address_2": "PUNE2",
"property_address_3": "PUNE3",
"property_city": "PUNE",
"property_cluster": "1",
"property_area": "1",
"property_postcode": "424031",
"property_landlord_ref_code": null,
"property_landlord_id": "1"
},
{
"property_id": "2",
"user_id": "1",
"property_code": "0002",
"property_added_date": "2017-12-14",
"property_updated_date": "2017-12-18 00:00:00",
"property_termination_date": null,
"property_ASYS_no": "asys 0200",
"propertyCode": "0002-hadpasar1",
"property_address_1": "hadpasar1",
"property_address_2": "hadpasar2",
"property_address_3": "hadpasar3",
"property_city": "pune",
"property_cluster": "9",
"property_area": "2",
"property_postcode": "012121",
"property_landlord_ref_code": null,
"property_landlord_id": "1"
}
]
}
Upvotes: 3
Views: 4778
Reputation:
Looks like your JSON is an array that contains dictionaries. (Key-Value data structure)
This should do the trick.
let data = dictionary["data"] as! [[String: Any]]
Then parse it inside your constructor:
struct PropertyList{
init(dict: [String: Any){
//parse here...
self.property_id = dict["property_id"] as! String
}
}
To add to array:
for dict in data{
let propertyList = PropertyList(dict: dict)
propertyArray.append(propertyList)
}
Upvotes: 1