如何在SWIFT中有效地解析大型JSON文件(40mb)

时间:2018-03-07 21:48:07

标签: arrays json swift

我目前正在尝试解析一个超过40mb的大型JSON文件。目前,当我在viewdidload()中加载JSON时,它会导致内存峰值高达300mb。是否有一个库或有效的方法来解析这些数据,以便它不会导致内存峰值?

当前代码:

    if let url = URL(string: "JSON SOURCE") {
        URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in
            if let err = error {
                print("Failed to fetch schools", err)
                return
            }
            guard let data = data else {return}
            do {
            let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
                guard let dictionaries = json as? [[String: Any]] else {return}

              dictionaries.forEach({ (item) in
                    self.array.append(item["value"] as? String)
                })
                print(dictionaries)
            } catch let jsonError {
                print("Failed to parse JSON properly ", jsonError)
            }
        }).resume()
    }

1 个答案:

答案 0 :(得分:1)

你必须

  • 使用分页
  • 将收到的数据拆分为更小的块
  • 解析时使用autoreleasepools来处理大型数组

绝对不需要一次在内存中存储那么多数据。