我有一个这样的模型:
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无效。有什么问题吗?