对我来说这是一个经常出现的问题 - 我可以使用SwiftyJSON来完成这项工作吗?
如何通过.POST与Alamofire获得以下JSON:
{
"class":"Class of 1969",
"students":
[
{
"name":"A name",
"age":25
},
{
"name": "B name",
"age": 25
}
]
}
我有以下课程:
import UIKit
import SwiftyJSON
class Student{
var Name:String = ""
var Age: Int = 0
}
class StudentsOf1969{
var Teacher: String = ""
var Students = [Student]()
}
Alamofire
Alamofire.request(.POST,
strUrl,
parameters: parameters, // How?????????
encoding: .JSON,
headers: headersWish).responseObject {...
我尝试过这样的事情 - 在课堂上添加一个var dictionary: [String: AnyObject]
:
class Student{
var Name:String = ""
var Age: Int = 0
}
class StudentsOf1969{
var Teacher: String = ""
var Students = [Student]()
var dictionary: [String: AnyObject]{
get {
return [
"teacher": self.Teacher,
"students": self.Students,
// or
"students": [self.Students],
]
}
}
}
答案 0 :(得分:1)
除了StudentsOf1969
dictionary
属性之外,您应该对Student
执行相同的操作。然后当您调用description
的{{1}}方法时,它将为数组中的每个StudentsOf1969
调用dictionary
属性(可以使用Swift {{{{{{ 1}}功能)。
例如:
Student
注意,我将map
重命名为struct Student {
var name: String
var age: Int
var dictionary: [String: AnyObject] {
get {
return ["name": name, "age": age]
}
}
}
struct ClassOfStudents {
var className: String
var students: [Student]
var dictionary: [String: AnyObject] {
get {
return [
"class": className,
"students": students.map { $0.dictionary }
]
}
}
}
,以便更清楚地表明它更常用于任何一类学生,而不是1969年的学生。此外,您的JSON引用了类名,而不是老师的名字,所以我相应修改了。
无论如何,您现在可以通过调用StudentsOf1969
的{{1}}方法获取ClassOfStudents
词典:
parameters