если let id = product.id {print (id) // 0}, я хочу преобразовать это значение id в Float, но оно имеет метадатип, может кто-нибудь дать представление об этом ... или как мне использовать функцию кодера для получить значение int из этого

я есть API, который иногда возвращает определенный ключ (в этом случаеid) в JSON как Int и в других случаях он возвращает тот же ключ, что и строка. Как мне использовать codable для разбора этого JSON?

struct GeneralProduct: Codable {
    var price:Double!
    var id:String?
    var name:String!

    private enum CodingKeys: String, CodingKey {
        case price = "p"
        case id = "i"
        case name = "n"
    }

    init(price:Double? = nil, id: String? = nil, name: String? = nil) {
        self.price = price
        self.id = id
        self.name = name
    }
}

Я продолжаю получать это сообщение об ошибке:Expected to decode String but found a number instead, Причина, по которой он возвращает число, заключается в том, что поле id пустое, а когда поле id пустое, по умолчанию возвращается 0 в качестве идентификатора, который кодируется идентифицируется как число. Я могу игнорировать ключ идентификации, но кодируемый не дает мне возможности игнорировать его, насколько мне известно. Что было бы лучшим способом справиться с этим?

Вот JSON. Это супер просто

Работает

{
  "p":2.12,
  "i":"3k3mkfnk3",
  "n":"Blue Shirt"
}

Ошибка - потому что в системе нет идентификатора, он возвращает 0 как значение по умолчанию, которое кодируемый, очевидно, видит как число, противоположное строке.

{
  "p":2.19,
  "i":0,
  "n":"Black Shirt"
}

Ответы на вопрос(2)

Ваш ответ на вопрос