将自定义对象的数组转换为Swift4中的字符串



我是Swift的新手,并且有一个问题将自定义对象的数组转换为字符串。

这是我的响应类门票

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

网络服务呼叫后,我将获得以下响应,并将其映射到门票课程。现在,我有一系列的"门票",如下所述。

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

现在,我可以将[Tickets]的数组转换为字符串吗?如果是这样,怎么样?另外,如何从String类中获得[Tickets]

将其转换为字符串后,我想将其存储到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)
}

最新更新