swift 3 json序列化

Posted

技术标签:

【中文标题】swift 3 json序列化【英文标题】:swift 3 json serialisation 【发布时间】:2016-10-07 08:58:30 【问题描述】:

我正在尝试使用 Swift 3 序列化 JSON,但结果很短.. 这是 JSON(摘要):


  "values": [
    
      "a": 
        "b": "1",
        "c": 
          "d": 0.0
        
      ,
      "wantThisOne": "2016-10-07T08:47:00Z"
    ,
    
      "a": 
        "b": "1",
        "c": 
          "d": 0.0
        
      ,
      "notThisOne": "2016-10-07T09:05:00Z"
    
  ]

我想从 'wantThisOne' 获得日期,但不确定如何获取它... 这是据我所知,但我在 if let 块中尝试的任何东西似乎都对我有用......有人处理过这样的事情吗?我已经查看了堆栈溢出等...但超级卡住了。

    NSURLConnection.sendAsynchronousRequest(request1 as URLRequest, queue: queue, completionHandler: (response: URLResponse?, data: Data?, error: Error?) -> Void in
        do 
            if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary 
                print(jsonResult)
            
         catch let error as NSError 
            print(error.localizedDescription)
        
    )

【问题讨论】:

【参考方案1】:

首先在 Swift 中使用泛型类型 Dictionary[String:Any] 而不是 NSDictionary 并且在你得到字典后从 value 键获取数组并遍历数组并从每个获取 wantThisOne对象。

if let jsonResult = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:Any] 
     if let valueArray = jsonResult["values"] as? [[String:Any]] 
          for item in valueArray 
              print("Date - \(item["wantThisOne"])")
          
     

【讨论】:

@Richie 欢迎朋友 :)

以上是关于swift 3 json序列化的主要内容,如果未能解决你的问题,请参考以下文章

使用 Alamofire 和 Swift 3 反序列化复杂的 JSON

字典到 JSON 在 swift 3 中被序列化两次

使用 SwiftyJSON 将 JSON 数组反序列化为 Swift 对象

Swift 中对象的自动 JSON 序列化和反序列化

swift 3 alamofire - 获取请求给出响应序列化失败

将 swift 数组转换为对象以进行 json 序列化