我目前正在尝试解析一个超过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()
}
答案 0 :(得分:1)
你必须
绝对不需要一次在内存中存储那么多数据。