无法将数据转换为 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 中使用 NSArrayNSDictionary。使用适当类型的 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 {