Skip to main content
 首页 » 操作系统

json之轻松地将对象序列化为 JSON

2024年01月01日33bluestorm

如何将 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 的简洁功能。