Json使用Alamofire在快速3中解析

hri*_*i b 1 json alamofire swift3 xcode8

我在swift 3工作.我是ios的新手.我试图像解析json数据一样

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>";
        }.......
Run Code Online (Sandbox Code Playgroud)

我只想要keyvalue:"name"和我要在Array中添加的值.

我尝试这样做,但我的应用程序正在崩溃.我的代码我喜欢如下

 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)


            }

        }
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何解决这个问题.提前致谢.

Nir*_*v D 7

首先在Swift中使用Swift的原生Array而Dictionary不是NSDictionaryNSArray.

现在要获得名称,您需要DataJSON响应中获取数组Dictionary.所以尝试这样的事情.

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)
     }
}
Run Code Online (Sandbox Code Playgroud)

产量

["TestMan", "tommy", ...]
Run Code Online (Sandbox Code Playgroud)