尝试分析JSON值时出错
我在尝试访问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"
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 {
致:
我建议你尽快学习可解码和可编码协议。他们使这项工作变得容易多了!