2017-01-04 266 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欢迎伴侣:) –