簡體   English   中英

Swift JSONSerialization.data 崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM