从 JSON (swift) 转换引用的数字

问题描述

我有一个像波纹管这样的结构:

struct MyStruct: Codable {
    
    var id: Int?

}

我从服务器收到的 JSON 是这样的:

{
    "id": 12345
}

但现在服务器端决定将所有数字作为引用数字发送,如下所示:

{
    "id": "12345"
}

使用 JSONDecoder().decode 解码此 json 时出现错误

The data Couldn’t be read because it isn’t in the correct format

有什么办法(除了为我到现在为止创建的每个结构编写自定义encodable 和 Decodable 实现)来解决这个问题?例如在 JSONDecoder()

上做某事

解决方法

您可以通过实现可解码协议所需的初始值设定项 init(from:) 来实现:

n

并且不要忘记解码其他属性的值。