如何使用 JSONDecoder 将 Int 解码为 String?
How can I use JSONDecoder to decode a Int to a String?
我正在从 API
解析 JSON
,如下所示:
let model = try? JSONDecoder().decode(Person.self, from: parsedData)
// MARK: - Person
struct Person: Codable {
let position
let rank: Int
}
问题是当我想用 rank
设置 UILabel
的值时,因为我想添加一个 '#',所以我必须按以下方式进行:
labelRank.text = "#" + "\(person.rank)"
实际上我想做的是:
labelRank.text = person.rank
所以实际上我想要一个从 Int
到 String
的自定义解析。我怎样才能达到这个结果?
你可以试试
struct Person: Codable {
var position: Int
var rank: String
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
position = try container.decode(Int.self, forKey: .position)
let decodedName = try container.decode(Int.self, forKey: .rank)
rank = "# \(decodedName)"
}
}
您可以计算出 属性 rankAsString,它将 return "#" + "\(rank)"
在 Person 结构中,如下所示。
struct Person: Codable {
let position: Int
let rank: Int
var rankAsString: String {
return "#" + "\(self.rank)"
}
}
然后使用它来填充标签,如下所示。
labelRank.text = rankAsString
希望对您有所帮助。
我正在从 API
解析 JSON
,如下所示:
let model = try? JSONDecoder().decode(Person.self, from: parsedData)
// MARK: - Person
struct Person: Codable {
let position
let rank: Int
}
问题是当我想用 rank
设置 UILabel
的值时,因为我想添加一个 '#',所以我必须按以下方式进行:
labelRank.text = "#" + "\(person.rank)"
实际上我想做的是:
labelRank.text = person.rank
所以实际上我想要一个从 Int
到 String
的自定义解析。我怎样才能达到这个结果?
你可以试试
struct Person: Codable {
var position: Int
var rank: String
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
position = try container.decode(Int.self, forKey: .position)
let decodedName = try container.decode(Int.self, forKey: .rank)
rank = "# \(decodedName)"
}
}
您可以计算出 属性 rankAsString,它将 return "#" + "\(rank)"
在 Person 结构中,如下所示。
struct Person: Codable {
let position: Int
let rank: Int
var rankAsString: String {
return "#" + "\(self.rank)"
}
}
然后使用它来填充标签,如下所示。
labelRank.text = rankAsString
希望对您有所帮助。