在 swift4 中将自定义对象数组转换为字符串
Convert array of custom object to String in swift4
我是 Swift 的新手,在将自定义对象数组转换为字符串时遇到问题。
这是我的回复class门票
public struct Tickets: Codable {
public let name: String!
public let status: String!
public let department: String!
}
网络服务调用后,我得到以下响应,它将映射到票证 class。现在,我有一个 "Tickets" 数组,如下所述 [Tickets]。
"tickets": [
{
"name": "d5b5d618-8a74-4e5f",
"status": "VALID",
"department": "IT"
},
{
"name": "a58f54b5-9420-49b6",
"status": "INVALID",
"department": "Travel"
}
]
现在,我可以将 [Tickets]
的数组转换为字符串吗?如果是这样,如何?此外,如何从 String
的 class 中将其恢复为 [Tickets]
。
我想把它转成String后存到UserDefaults中,以后再取回
首先:
永远不要将结构或 class 中的属性或成员声明为隐式解包可选,如果它们应该在 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)
}
我是 Swift 的新手,在将自定义对象数组转换为字符串时遇到问题。
这是我的回复class门票
public struct Tickets: Codable {
public let name: String!
public let status: String!
public let department: String!
}
网络服务调用后,我得到以下响应,它将映射到票证 class。现在,我有一个 "Tickets" 数组,如下所述 [Tickets]。
"tickets": [
{
"name": "d5b5d618-8a74-4e5f",
"status": "VALID",
"department": "IT"
},
{
"name": "a58f54b5-9420-49b6",
"status": "INVALID",
"department": "Travel"
}
]
现在,我可以将 [Tickets]
的数组转换为字符串吗?如果是这样,如何?此外,如何从 String
的 class 中将其恢复为 [Tickets]
。
我想把它转成String后存到UserDefaults中,以后再取回
首先:
永远不要将结构或 class 中的属性或成员声明为隐式解包可选,如果它们应该在 init
方法中初始化。如果它们可以 nil
将它们声明为常规可选 (?
) 否则为非可选(是的,如果没有问号或感叹号,编译器不会抱怨)。
只需使用 JSONDecoder()
和 JSONEncoder()
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)
}