尝试分析JSON值时出错

尝试分析JSON值时出错,json,swift,api,Json,Swift,Api,我在尝试访问JSON数据时出错,原因是: 错误: func parseData() { fetchedExercise = [] let url = "https://wger.de/api/v2/exercise/?format=json&language=2&status=2" var request = URLRequest(url: URL(string: url)!) request.httpMethod = "GET"

我在尝试访问JSON数据时出错,原因是:

错误:

    func parseData() {

    fetchedExercise = []

    let url = "https://wger.de/api/v2/exercise/?format=json&language=2&status=2"
    var request = URLRequest(url: URL(string: url)!)
    request.httpMethod = "GET"

    let configuration = URLSessionConfiguration.default
    let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main)

    let task = session.dataTask(with: request) { (data, response, error) in

        if error != nil {
            print("error")
        }
        else {

            do {
                if let data = data,
                    let fetchedData = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any],
                    let exercises = fetchedData["results"] as? [[String: Any]] {

                    for eachExercise in exercises
                    {
                        if let name = exercises["name"] as? String, let description = exercises["description"] as? String { // Cannot subscript a value of type [[String: Any]] with an index of type 'String'
                            fetchedExercise.append(Exercise(name: name, description: description))
                        }
                    }
                }
            }
            catch {
                print("error")
            }
        }
    }
    task.resume()
}
无法为类型为[[String:Any]]的值下标类型为的索引 “字符串”

这是我的代码:

    func parseData() {

    fetchedExercise = []

    let url = "https://wger.de/api/v2/exercise/?format=json&language=2&status=2"
    var request = URLRequest(url: URL(string: url)!)
    request.httpMethod = "GET"

    let configuration = URLSessionConfiguration.default
    let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main)

    let task = session.dataTask(with: request) { (data, response, error) in

        if error != nil {
            print("error")
        }
        else {

            do {
                if let data = data,
                    let fetchedData = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [String:Any],
                    let exercises = fetchedData["results"] as? [[String: Any]] {

                    for eachExercise in exercises
                    {
                        if let name = exercises["name"] as? String, let description = exercises["description"] as? String { // Cannot subscript a value of type [[String: Any]] with an index of type 'String'
                            fetchedExercise.append(Exercise(name: name, description: description))
                        }
                    }
                }
            }
            catch {
                print("error")
            }
        }
    }
    task.resume()
}
我已在代码注释中显示错误所在行。

请尝试更改该行:

if let name = exercises["name"] as? String, let description = exercises["description"] as? String {
致:


我建议你尽快学习可解码和可编码协议。他们使这项工作变得容易多了!