【问题标题】:Json Parsing in swift 3 using Alamofire使用 Alamofire 在 swift 3 中解析 Json
【发布时间】:2017-01-04 11:34:28
【问题描述】:

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

我只想要 keyvalue:"name" 和我想添加到数组中的值。

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

 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)


            }

        }
}

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

【问题讨论】:

    标签: json swift3 alamofire xcode8


    【解决方案1】:

    首先在 Swift 中使用 Swift 的原生 Array 和 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", ...]
    

    【讨论】:

    • @hrithib 欢迎朋友 :)
    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2017-01-20
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多