2017-01-04 7 views
1

Ich arbeite in swift 3. Ich bin neu in IOS. Ich versuche, die JSON-Daten wieJson Parsing in Swift 3 mit Alamofire

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>"; 
     }....... 

Ich möchte die keyvalue nur zu analysieren: „name“ und dieser Wert I in einem Array hinzufügen möchten.

Ich habe versucht, so zu tun, aber meine App bekommt Crash. Mein Code, den ich wie folgt schlürfe

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) 


      } 

     } 
} 

Kann mir bitte jemand sagen, wie man das löst. Danke im Voraus.

Antwort

7

Als Erstes verwenden Sie Swift in Swift's nativem Array und Dictionary anstelle von NSDictionary und NSArray.

Um nun den Namen zu erhalten, müssen Sie Data Array von Ihrer JSON Antwort Dictionary erhalten. Also versuche so etwas.

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) 
    } 
} 

Ausgabe

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

Vielen Dank. Es funktioniert gut. –

+0

@hrithib Willkommen Kumpel :) –