我正在尝试从JSON响应创建一些数组。我正在使用Alamofire对象映射器。我不确定是否正确映射了对象。
这是我的JSON回应
{
"status": "success",
"data": [
{
"id": 1,
"name": "EXERCISE",
"parent_id": null,
"children": [
{
"id": 2,
"name": "All Exercises",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 3,
"name": "Warmup",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 4,
"name": "Pliés",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 5,
"name": "Tendus (Slow)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 6,
"name": "Tendus (Fast)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 7,
"name": "Dégagés (Slow)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 8,
"name": "Dégagés (Fast)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 9,
"name": "Petits Battements",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 10,
"name": "Ronds de Jambe",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 11,
"name": "Adage",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 12,
"name": "Frappés",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 13,
"name": "Fondus",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 14,
"name": "Grands Battements",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 15,
"name": "Rises",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 16,
"name": "Stretch",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 17,
"name": "Tendus (Centre)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 18,
"name": "Adage/PDB (Centre)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 19,
"name": "Relevés",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 20,
"name": "Pirouettes",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 21,
"name": "Petit Allegro",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 22,
"name": "Medium Allegro",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 23,
"name": "Grand Allegro",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 24,
"name": "Men’s Allegro",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 25,
"name": "Traveling Centre (Odd Bits)",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 26,
"name": "Coda",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 27,
"name": "Révérence/Cool Down",
"parent_id": 1,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
}
],
"created_at": "2018-08-22 09:03:47",
"updated_at": "2018-08-22 09:03:47"
},
{
"id": 28,
"name": "LENGTH",
"parent_id": null,
"children": [
{
"id": 29,
"name": "All Lengths",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 30,
"name": "Short (__x4)",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 31,
"name": "Medium (__x8)",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 32,
"name": "Long (__x16)",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 33,
"name": "Marathon (__x32)",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
},
{
"id": 34,
"name": "Other",
"parent_id": 28,
"children": [],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
}
],
"created_at": "2018-08-22 09:03:48",
"updated_at": "2018-08-22 09:03:48"
}
]
}
这是我的Model类的片段
var Lid: Int?
var Fid: Int?
var Lname: String!
var Fname: String!
public override func mapping(map: Map) {
super.mapping(map: map)
Lid <- map["data.id"]
Lname <- map["data.name"]
Fid <- map["data.children.id"]
Fname <- map["data.children.name"]
}
当我调试时-我的模型类的属性为nil。我怎样才能得到这个回应,并最终得到由Lid和Lname组成的数组?
最佳答案
你可以做这样的事情
struct Exercise: Mappable {
var id: Int?
var name: String?
var parent_id: Int?
var childrens: [Exercise]?
init?(map: Map) {}
mutating func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
parent_id <- map["parent_id"]
childrens <- map["children"]
}
}
然后像这样映射他们
func mapData(data: [String: Any]) {
//the data here is the JSON of yours
guard let exerciseArray = data["data"] as? [[String: Any]] else { return }
//now we should be able to map array
let mappedExercises = Mapper<Exercise>().mapArray(JSONArray: exerciseArray)
}
现在,在新版本的swift中,您可以使用
Codable
协议来处理模型的编码和解码。