无法将数据转换为 NSDictionary
Cannot convert Data to NSDictionary
我正在尝试将数据从 URLSession 转换为 NSDictionary,但在将数据转换为字典时失败了。
以下:
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
print(json ?? "NotWorking")
产出
(
{
babyId = 1;
id = 17;
timestamp = "2018-06-30 09:23:27";
}
)
但是当我尝试将其转换为字典时,它会输出 nil。
let json = try? JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary
网页输出
[{"id":"17","babyId":"1","timestamp":"2018-06-30 09:23:27"}]
哪里出错了?
[ ]
表示JSON中的数组。 { }
表示字典。你有一个字典数组。请注意,当您在 Swift 中打印数组时,您将看到 ( )
.
如果没有明确的理解和具体原因,请不要在 Swift 中使用 NSArray
或 NSDictionary
。使用适当类型的 Swift 数组和字典。
您的代码应该是:
do {
if let results = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
// results is now an array of dictionary, access what you need
} else {
print("JSON was not the expected array of dictonary")
}
} catch {
print("Can't process JSON: \(error)")
}
而且您也不应该使用 data!
。在这上面的某个地方你应该有一个 if let data = data {
我正在尝试将数据从 URLSession 转换为 NSDictionary,但在将数据转换为字典时失败了。
以下:
let json = try? JSONSerialization.jsonObject(with: data!, options: [])
print(json ?? "NotWorking")
产出
(
{
babyId = 1;
id = 17;
timestamp = "2018-06-30 09:23:27";
}
)
但是当我尝试将其转换为字典时,它会输出 nil。
let json = try? JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary
网页输出
[{"id":"17","babyId":"1","timestamp":"2018-06-30 09:23:27"}]
哪里出错了?
[ ]
表示JSON中的数组。 { }
表示字典。你有一个字典数组。请注意,当您在 Swift 中打印数组时,您将看到 ( )
.
如果没有明确的理解和具体原因,请不要在 Swift 中使用 NSArray
或 NSDictionary
。使用适当类型的 Swift 数组和字典。
您的代码应该是:
do {
if let results = try JSONSerialization.jsonObject(with: data!) as? [[String:Any]] {
// results is now an array of dictionary, access what you need
} else {
print("JSON was not the expected array of dictonary")
}
} catch {
print("Can't process JSON: \(error)")
}
而且您也不应该使用 data!
。在这上面的某个地方你应该有一个 if let data = data {