Swift n00b在这里。
我从服务器得到这样的回复:
[
{
"foo": [],
"bar":"asdf",
...
}
]
现在我了解了如何解析常规JSON,但是当它有一个数组作为基本元素时却没有。
这是我到目前为止使用的代码,它适用于常规JSON:
let task = session.dataTask(with: urlRequest) {
(data, response, error) in
// check for any errors
guard error == nil else {
print("error calling POST on \(String(describing: urlRequest.url?.absoluteURL))")
print(error!)
return
}
// make sure we got the data
guard let responseData = data else {
print("Error: did not receive data")
return
}
let responseString = String(data: responseData, encoding: String.Encoding.utf8) as String!
// parse the result as JSON, since that's what the API provides
do {
guard let todo = try JSONSerialization.jsonObject(with: responseData, options: [])
as? [String: Any] else {
print("error trying to convert data to JSON")
return
}
... // do whatever with the response
} catch {
print("an error occurred")
return
}
}
task.resume()
我从中得到的错误是"尝试将数据转换为JSON时出错。
解析我能想到的响应的最简单方法是从1到长度为1的子串,然后解析它,但这似乎并不特别安全。
我有什么方法可以将该回复解析为[Dictionary]
?
答案 0 :(得分:1)
您的JSON是常规JSON。顶层的数组与字典一样有效(和常规)。
只需相应更新您的演员阵容:
guard let todo = try JSONSerialization.jsonObject(with: responseData, options: [])
as? [[String: Any]] else {
这表明你有一个字典数组。现在,您可以根据需要迭代数组并获取每个字典。