如何将 Swift 对象序列化为 JSON,例如以下对象:
class Order {
var id:Int
var title:String
var email:String
init(id:Int, title:String, email:String) {
self.id = id
self.title = title
self.email = email
}
}
let order = Order(id:345, title:"Title", email:"email@gmail.com")
目前我尝试像这样创建一个 SwiftyJSON JSON 对象,但它仍然需要我手动指定每个属性:
let json = JSON()
json["id"] = order.id
json["title"] = order.title
json["email"] = order.email
此外,这对我没有帮助,因为 Alamofire 不理解 SwiftyJSON 的对象,需要我手动创建字典:
let dict:[String, AnyObject] = [
"id":order.id,
"title":order.title,
"email":order.email
]
Alamofire.request(.POST, Configuration.ADD_ORDER_URL, parameters: dict, encoding:.JSON)
回顾一下,我如何将对象序列化为 JSON 并立即使用 Alamofire 将其发送出去?
请您参考如下方法:
我遇到了同样的问题,但是我花了很长时间才找到这个问题。
但是,user2629998 的响应是正确的。在 OP 的情况下,他使用的是字典,因此他需要这样声明:
让参数:[String : AnyObject] = []
此外,您还必须声明 header
let headers = ["Content-Type": "application/json"]
稍后必须传递给 alamofire 请求
Alamofire.request(.POST, yourEndpoint, headers:headers, parameters: parameters, encoding: .JSON)
我决定详细说明 user2629998,因为 header 会有所不同。
此外,我想指出,这对于许多用户来说可能是不直观的,正如我在搜索有关此问题或类似问题的不同问题时所注意到的那样。为什么?因为即使你想发送一个 JSON,你也不能在 Alamofire 中这样做。所以基本上,Alamofire 会在后台处理它。因此,您不得不发送字典并使用 Alamofire 的简洁功能。
