【发布时间】:2019-05-01 07:49:43
【问题描述】:
我正在尝试使用 JSONDecoder 解析响应。如果对应的key有value则编译成功,但是如果key有null值则编译失败,报如下错误。
valueNotFound(Swift.String, Swift.DecodingError.Context(codingPath: [编码键(字符串值:“结果”,intValue:无), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "VehicleName", intValue: nil)], debugDescription: "预期的字符串 值,但找到了 null。”,基础错误:nil))
guard let obj = try? JSONDecoder().decode(ShipmentsResponse.self, from: json) else {return}
这是我拒绝的 Shipment 类
class ShipmentResponse : Codable {
var ItemId: String = ""
var VehicleName: String = ""
var VehicleNumber: String = ""
convenience required init(from decoder: Decoder) throws
{
self.init()
let values = try decoder.container(keyedBy: CodingKeys.self)
ItemId = try values.decode(String.self, forKey: .ItemId)
do {
_ = try values.decode(String.self, forKey: .VehicleName)
} catch {
print(error)
}
VehicleName = try values.decode(String.self, forKey: .VehicleName)
VehicleNumber = try values.decode(String.self, forKey: .VehicleNumber)
}
}
这是json
{
"ItemId": "8af66c87-9099-42a7-8a34-39def02160ac",
"VehicleName": null,
"VehicleNumber": null
}
【问题讨论】:
标签: ios json swift parsing jsondecoder