我有一个从JSON文件读取的字典数组,如下所示。我想将该值(jsonResult)存储到类变量中,以便可以使用它来填充表格视图。但是,我不太了解如何存储该值。
这是我获取字典数组(jsonResult)的方式:
if let path = Bundle.main.path(forResource: filename, ofType: "json") {
do {
let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as! [String:Any]
self.tableData = jsonResult // WHAT GOES HERE?
} catch {
// handle error
}
}
这是我的类变量,我要将字典数组存储到:
var tableData = [Dictionary<String, String>]()
如何正确将jsonResult存储到tableData中?我不希望使用结构,因为字典的结构可能会有所不同。
答案 0 :(得分:1)
您声明JSON是一个字典数组,但是您正在将JSONSerialization.jsonObject
的结果强制转换为字典。由于您似乎期望使用包含字符串键和值的字典数组,因此请相应地转换结果。但是要安全地做。使用JSON时,切勿使用!
。
if let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [[String:String]] {
self.tableData = jsonResult
} else {
// Error - unexpected JSON result
}
这假设您想要顶级的JSON结果。如果实际上jsonResult
应该是一个字典,并且该顶级字典具有您想要的实际字典数组的键,那么您需要相应地修复代码。