如何使用Swift 4对json进行解码?
$('#firstButton').click(function(){
$('#surpise').css("visibility",'visible');
});
我使用以下方法尝试过:
{
"data": {
"id": 22,
"packageId": 5,
"Package": {
"id": 5,
"color": "blue"
}
},
"error": false,
"message": "Successfully Fetched"
}
它给了我以下错误:
keyNotFound(LocalNotificationsAlert.Root.CodingKeys.id, Swift.DecodingError.Context(codingPath:[],debugDescription:“不 与键id(\“id \”)相关联的值。“,underlyingError:nil))
请帮我解决这个问题,谢谢。
答案 0 :(得分:3)
Root 对象不是包含id
,packageId
和package
键的字典,Root
对象是带有键的外部字典data
,error
,message
。
所以你需要3个结构
struct Root: Codable {
let data : PackageData? // If `error` is true `data` might be missing
let error : Bool
let message : String
}
struct PackageData: Codable {
enum CodingKeys: String, CodingKey {
case package = "Package"
case id, packageId
}
let package : Package
let id : Int
let packageId : Int
}
struct Package : Codable {
let id : Int
let color : String
}
答案 1 :(得分:0)
如果您不想自定义解码响应,则需要为整个json响应提供结构。
struct Response: Decodable {
let data: Root
let error: Bool
let message: String
}