![](/img/trans.png)
[英]Under what circumstances does JSONSerialization.data(withJSONObject:) throw a catchable error?
[英]Swift JSONSerialization.data crashing
我在下面有一個示例 2 結構,
struct Person: Codable {
let a: String
let b: [Department]
}
struct Department: Codable {
let bb: String
}
let dict = ["a": "aa", "b": [Department(bb: "D")]] as [String : Any]
// Crashing here
let data = try? JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
我嘗試從字典創建 Person object,我在 JSON write (__SwiftValue)' 中遇到崩潰無效類型,我知道 Codable 是 Swift 類型 JSONSerialization.data 將不接受,我如何轉換它。 我不想手動構建 Person object
首先,您不能使用以下類型對字典進行編碼:[String:Any],因為協議“Any”作為一種類型不能符合“Encodable”,因此在您的示例中,您必須創建兩個不同類型的字典:[String:String]和 [字符串:部門]。
要對 Person 實例進行編碼,您需要執行以下操作:
let person = Person(a="example", b=Department(bb="example"))
let personData = try? JSONEncoder().encode(person)
要解碼 Person 實例,您需要執行以下操作:
let decodedPerson = try? JSONDecoder().decode(Person.self, from: personData)
如果你收到一個 JSON object 你可以這樣解碼它:
let data = try? JSONSerialization.data(withJSONObject: object, options: .prettyPrinted)
let decodedPerson = try? JSONDecoder().decode(Person.self, from: data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.