簡體   English   中英

在swift4中將自定義對象數組轉換為String

[英]Convert array of custom object to String in swift4

我是Swift新手,在將自定義對象數組轉換為String時遇到問題。

這是我的回應類門票

public struct Tickets: Codable {
        public let name: String!
        public let status: String!
        public let department: String!
    }

在webservice調用之后,我得到以下響應,它將被映射到Tickets類。 現在,我有一個“票證”數組,如下面所述的[票證]。

"tickets": [
    {
      "name": "d5b5d618-8a74-4e5f",
      "status": "VALID",
      "department": "IT"
    },
    {
      "name": "a58f54b5-9420-49b6",
      "status": "INVALID",
      "department": "Travel"
    }
  ]

現在,我可以將[Tickets]數組轉換為String嗎? 如果是這樣,怎么辦? 另外,如何從String類中以[Tickets]獲取它。

我想將其轉換為String后將其存儲到UserDefaults中,並在以后檢索

首先:

如果應該在init方法中初始化屬性或成員,請不要將結構或類中的屬性或成員聲明為隱式未包裝的可選屬性。 如果它們可能為nil則將它們聲明為常規可選( ? ),否則聲明為非可選(是的,如果沒有問題或感嘆號,編譯器將不會抱怨)。

只需使用JSONDecoder()JSONEncoder()對JSON進行解碼和編碼

let jsonTickets = """
{"tickets":[{"name":"d5b5d618-8a74-4e5f","status":"VALID","department":"IT"},{"name":"a58f54b5-9420-49b6","status":"INVALID","department":"Travel"}]}
"""

public struct Ticket: Codable {
    public let name: String
    public let status: String
    public let department: String
}

do {
    let data = Data(jsonTickets.utf8)
    let tickets = try JSONDecoder().decode([String:[Ticket]].self, from: data)
    print(tickets)
    let jsonTicketsEncodeBack = try JSONEncoder().encode(tickets)
    jsonTickets == String(data: jsonTicketsEncodeBack, encoding: .utf8) // true
} catch {
    print(error)
}

暫無
暫無

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

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