在序列化时强制执行JSON类型



我有以下内容:

/// Reads local JSON file
func readJSONFromFile<T : Decodable>(modelToDecode: T.Type, fileName: String) throws -> T {
let path = Bundle.main.path(forResource: fileName, ofType: "json")!

let fileUrl = URL(fileURLWithPath: path)
// Getting data from JSON file using the file URL
let data = try Data(contentsOf: fileUrl, options: .mappedIfSafe)
let json = try JSONSerialization.jsonObject(with: data)

return json
}

我如何在返回前的最后一行明确表示我想要解码的类型?例如,假设类型为MyModel123。我最后尝试了as! T,但给了我一个错误Thread 1: signal SIGABRT

问题是我需要使用JSONDecoder而不是JSONSerialization

以下是我如何更改最后一行:

let json = try JSONDecoder().decode(T.self, from: data)