2017-01-04 187 views
1

我在swift 3中工作。我是ios的新手。我試圖解析像Json使用Alamofire在swift 3中解析

My jsonVlaue is : { 
    data =  (
       { 
      Password = "@1234"; 
      UserName = "<null>"; 
      "___class" = OrderTable; 
      "__meta" = "{\"relationRemovalIds\":{},\"selectedProperties\":[\"UserName\",\"created\",\"name\",\"___class\",\"ownerId\",\"updated\",\"objectId\",\"Password\"],\"relatedObjects\":{}}"; 
      created = 1483525854000; 
      name = TestMan; 
      objectId = "4316DEBA-78C1-C7BD-FFBC-3CB77D747F00"; 
      ownerId = "<null>"; 
      updated = "<null>"; 
     }, 
       { 
      Password = 123; 
      UserName = "<null>"; 
      "___class" = OrderTable; 
      "__meta" = "{\"relationRemovalIds\":{},\"selectedProperties\":[\"UserName\",\"created\",\"name\",\"___class\",\"ownerId\",\"updated\",\"objectId\",\"Password\"],\"relatedObjects\":{}}"; 
      created = 1483516868000; 
      name = tommy; 
      objectId = "29155114-C00B-5E1C-FF6F-7C828C635200"; 
      ownerId = "<null>"; 
      updated = "<null>"; 
     }....... 

我只想要鍵值JSON數據:「名稱」和值我想在一個數組添加。

我試圖這樣做,但我的應用程序正在崩潰。我的代碼我很喜歡如下

func getLoginDetails() 
    { 
     //https://api.backendless.com/<version>/data/<table-name>/properties 

     Alamofire.request(HeadersClass.api.domainName + "OrderTable", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HeadersClass.allHeaders.headers).responseJSON { response in 
      //debugPrint(response) 
      if let jsonDict = response.result.value as? NSDictionary { 
       print("My jsonVlaue is : \(jsonDict)") 

       let arrayPracticeData: NSArray = jsonDict.value(forKey: "name") as! NSArray 

        print(arrayPracticeData) 


      } 

     } 
} 

任何人都可以請告訴我如何解決這個問題。提前致謝。

回答

7

首先在Swift中使用Swift的本地陣列和Dictionary而不是NSDictionaryNSArray

現在要獲取名稱,您需要從JSON響應Dictionary獲得Data數組。所以嘗試這樣的事情。

Alamofire.request(HeadersClass.api.domainName + "OrderTable", method: .get, parameters: nil, encoding: JSONEncoding.default, headers: HeadersClass.allHeaders.headers).responseJSON { response in 

    //debugPrint(response) 
    if let jsonDict = response.result.value as? [String:Any], 
     let dataArray = jsonDict["data"] as? [[String:Any]] { 
      let nameArray = dataArray.flatMap { $0["name"] as? String } 
      print(nameArray) 
    } 
} 

輸出

["TestMan", "tommy", ...] 
+0

太謝謝你了。它工作正常。 –

+0

@hrithib歡迎伴侶:) –