swift 4 + Alamofire : parse array of custom struct

标签 swift parsing alamofire swift4

我的 API 返回以下 JSON([CustomClass] 数组):

[{
        "name": "Name A",
        "startingDate": "2018-01-01",
        "duration": 4
    },
    {
        "name": "Name B",
        "startingDate": "2018-01-01",
        "duration": 4
    }
]

我正在使用 Alamofire 发出请求,然后解析 JSON:

static func test(parametersGet:Parameters, completion: @escaping ([CustomStruct]?, Error?) -> Void ) {
        Alamofire.request(API.test, parameters: parametersGet).validate().responseJSON { response in
            switch response.result {
            case .success:
                if let json = response.result.value {
                    let workoutCards = json as! [CustomStruct]
                    completion(workoutCards, nil)
                }
            case .failure(let error):
                completion(nil, error)
            }
        }
    }

CustomStruct 它只是一个带有这些键的 Codable 结构。

我收到以下错误:“无法将‘__NSDictionaryI’类型的值转换为‘Project.CustomStruct’”。如何解析 JSON?

最佳答案

在您的情况下,您需要使用 JSONDecoder 将 jsonData 解码为 [CustomStruct]

  Alamofire.request(API.test, parameters: parametersGet).validate().responseJSON { response in
            switch response.result {
            case .success:
                if let jsonData = response.data {
                    let jsonDecoder = JSONDecoder()
                    do {
                        let workoutCards = try jsonDecoder.decode([CustomStruct].self, from: jsonData)
                        completion(workoutCards, nil)
                    }catch let error{
                        print(error.localizedDescription)
                        completion(nil, error)
                    }
                }
            case .failure(let error):
                completion(nil, error)
            }
        }

关于 swift 4 + Alamofire : parse array of custom struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50913632/

相关文章:

ios - 快速处理 SWRevealViewController 中的 CellForRowAtIndexPath?

iOS Firebase UI 出现许多错误

javascript - 如何为pegJS定义递归规则

swift - Alamofire:类型 'Request' 的值没有成员 responseImage?

swift - Alamofire 4 错误请求 'extra argument in call'

objective-c - 从 Objective-C 协议(protocol)实例匹配 Swift 协议(protocol)

Swift collectionview 幻灯片上的幻灯片对齐

java - 如何使用 img 解析 href

java - 用java解析阿拉伯文/中文/日文RSS提要

json - Alamofire 响应序列化失败