如何使用 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

所以实际上我想要一个从 IntString 的自定义解析。我怎样才能达到这个结果?

你可以试试

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

希望对您有所帮助。