代码之家  ›  专栏  ›  技术社区  ›  arcade16

如何将字典数组存储到类变量中?

  •  0
  • arcade16  · 技术社区  · 5 年前

    下面是如何获取字典数组(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中?我不想使用结构,因为字典的结构可能会有所不同。

    1 回复  |  直到 5 年前
        1
  •  1
  •   rmaddy    5 年前

    您声明JSON是一个dictionary数组,但是您正在强制转换 JSONSerialization.jsonObject !

    if let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves) as? [[String:String]] {
        self.tableData = jsonResult
    } else {
        // Error - unexpected JSON result
    }
    

    这假设您需要JSON结果的顶层。如果事实上 jsonResult 应该是一个字典,并且顶级字典有一个指向所需字典实际数组的键,然后需要相应地修复代码。