2017-09-02 41 views
-1

我有下载数据验证码:如何解析json的post方法?

let parameters = [ 
      "NationalCode": "06090632", 
      "password": "0012" 
     ] 
let url = "http://android/home/login" 
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON { response in 

      if let data = response.data { 
       let json = String(data: data, encoding: String.Encoding.nonLossyASCII) 
       print(json) 
       self.lbl1.text=json 

       } 
      } 

我有这样的结果是正确的:

Optional("{\"id\":\"3\",\"name\":\"jac\"}") 

现在我想循环结果的每一个项目。我想在一个标签中打印“id”,在另一个标签中打印“名称”。 我该怎么做? (我是Swift新手)

+2

请正确格式的代码。 – RaghavGarg

+0

swift 4中的新功能:可以使用JSONDecoder。在您的模型中实施Codable协议。示例: class class Model:Codable { var id:NSNumber? var name:String? } // 让 解码器= JSONDecoder() 让模型=尝试decoder.decode(Model.self,来自:数据) 打印( “\(model.name)”) –

回答

1

您需要使用JSONSerialization对象来正确分析您的json。这个对象具有静态方法的JSONObject至极回报回的任何对象

JSON是通过字典或数组来表示,所以你需要转换的任何与正确类型的JSON

在你的例子,JSON返回包含一个字典。键是字符串类型,因此您需要确定键上关联的值的类型。在你的例子中,类型都是字符串。

所以,你需要这样做:

let json = try? JSONSerialization.jsonObject(with: data, options: []) 
guard let dictionary = json as? [String:String] else { return } 
print(dictionary["name"]) 

希望这有助于你;)

+1

非常感谢你 – user3805066