JSON, созданный из пользовательского объекта JSONEncoder, недопустим - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть такая модель:

struct Cost : Codable {
    let id : String?
    let label : String?
    let value : String?

    enum CodingKeys: String, CodingKey {

        case id = "id"
        case label = "label"
        case value = "value"
    }

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        id = try values.decodeIfPresent(String.self, forKey: .id)
        label = try values.decodeIfPresent(String.self, forKey: .label)
        value = try values.decodeIfPresent(String.self, forKey: .value)
    }

    func encode(to encoder: Encoder) throws {
        var container = encoder.container(keyedBy: CodingKeys.self)
        try container.encode(id, forKey: .id)
        try container.encode(label, forKey: .label)
        try container.encode(value, forKey: .value)
    }
}

У меня есть такой объект:

let newCost = Cost(id: "something", label: "something", value: "something")

Я хочу отправить этот объект в теле запроса POST, поэтому я использовал JSONEncoderпреобразовать это так:

let jsonData = try! JSONEncoder().encode(newCost)

Но jsonData недействителен. В чем проблема?

...