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