簡體   English   中英

快速將基礎和非基礎類型序列化為 JSON

[英]Serializing Foundation and non-foundation types to JSON in swift

我正在嘗試將兩種不同類型的對象序列化為JSON ,但我只能將JSONEncoder用於一種,並將JSONSerialization用於另一種。

一個是簡單的Int ,我將其序列化如下:

let ticket: [String:Any] = ["ticket": -1]
let ticketJson = try! JSONSerialization.data(withJSONObject: ticket)
let ticketJsonString = String(data: ticketJson, encoding: String.Encoding.utf8)

另一種對象類型是我創建的一個類,我將其序列化如下:

let encodedNotification = try! JSONEncoder().encode(notification)
let encodedNotificationJsonString = String(data: encodedNotification, encoding: String.Encoding.utf8)

理想情況下,我會使用以下字典一次序列化兩者:

let parameters: [String:Any] = ["ticket": -1, "notification": notification]

這可能嗎? 如果是這樣,如何? 我一直無法弄清楚。

謝謝!

將值放在結構中而不是[String: Any]

struct Parameters: Encodable {
    let ticket: Int
    let notification: Notification
}

let parameters = Parameters(ticket: -1, notification: notification)

let encoded = try JSONEncoder().encode(parameters)

通常,避免在 Swift 中使用Any 它是一種很難正確使用的類型,並且不能很好地與類型系統配合使用。 除了在相當高級的代碼中,它主要由於 ObjC 橋接(例如在 JSONSerialization 中,它是 ObjC NSJSONSerialization 的橋梁)而出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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