- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过网络解析 JSON 数据。下面你可以看到魔法发生的地方。
func getBookingsForDate(date: String, completionHandler: @escaping ([String:String]) -> Void ){
struct bookings: Codable {
var bookieName : String
var bookieNumber: String
var booked: String
var bookingTime: String
private enum Codingkeys: String, CodingKey{
case bookieName
case bookieNumber
case booked
case bookingTime
}
}
let params = ["date":date]
let urlString = "http://mscissorss.pythonanywhere.com/getBookings/"
Alamofire.request(urlString, method: .get, parameters: params).responseJSON {
response in
switch response.result {
case .success(let JSON):
let decoder = JSONDecoder()
guard let _ = response.data else{
return
}
do {
let loginDetails = try decoder.decode(bookings.self, from: response.data!)
print(loginDetails)
} catch let err{
print(err)
}
//let bookings = JSON as! NSDictionary
//completionHandler(JSON)
/*
do {
let decoder = JSONDecoder()
let gitData = try decoder.decode(bookings.self, from: JSON)
print(gitData.bookieName)
} catch let err {
print("Err", err)
}
*/
break
case .failure(let error):
print(error)
}
}
}
根据代码,我收到以下错误消息:
keyNotFound(CodingKeys(stringValue: "bookieName", intValue: nil), Swift.DecodingError.Context(codingPath: [], debugDescription: "No value associated with key CodingKeys(stringValue: \"bookieName\", intValue: nil) (\"bookieName\").", underlyingError: nil))
我得到的 JSON 响应如下所示:
{
0 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "10:00";
};
1 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "10:30";
};
10 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "15:00";
};
11 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "15:30";
};
12 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "16:00";
};
13 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "16:30";
};
14 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "17:00";
};
15 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "17:30";
};
16 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "18:00";
};
2 = {
booked = false;
bookieName = "";
bookieNumber = "";
bookingTime = "11:00";
};
}
这是我第一次解码,所以如果你有答案,请尝试解释一下为什么我需要做出我需要的改变。
更新
将代码更改为@sh_khan 和@vadian 建议的代码后,它可以解析它,但是我在解析的对象中仍然遇到此错误:
["1": MagicS.(unknown context at 0x106932738).bookings(bookieName: "", bookieNumber: "", booked: "false", bookingTime: "10:30"),
"0": MagicS.(unknown context at 0x106932738).bookings(bookieName: "", bookieNumber: "", booked: "false", bookingTime: "10:00"),
此外,如果我希望能够访问单个值,可以说第一个带有键 "0" -> bookieName
的项目。 ,我将如何使用 loginDetails
来做到这一点?
最佳答案
第一个 booked
是一个 Bool
,如果您不重命名键,则不需要 private enum Codingkeys
struct Booking: Codable {
let bookieName : String
let bookieNumber: String
let booked: Bool
let bookingTime: String
}
第二次这样解码
let loginDetails = try decoder.decode([String:Booking].self, from: response.data!)
关于json - 解码 JSON 时出错 - keyNotFound(CodingKeys,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53377296/
我有一个非常冗长的字典,存储了 350 个键,每个键都是 3 个字节的字节数组。该词典用于解释来自自制硬件的传入数据。 在对应用程序进行压力测试时,我遇到了一个奇怪的错误,它告诉我存在 KeyNotF
我需要做 Sunset Sunrise App,这是我的代码。但我有这个错误: Error serializing json: keyNotFound(Sunrise_Sunset.SunPositi
我正在我的 iOS 应用程序中使用 NASA API 来获取一些图像。我的服务器响应如下所示: { "date": "2014-02-04T03:30:01", "id": "LC8_L1T_
我正在练习在 Swift 4 中解析 JSON 的新方法,并且我正在使用纽约时报 API - 我发现很难阅读 JSON 的结构,因为 API 页面只是 shows a wall of text 我已经
我已经准备好用头撞墙了 我有一个名为 Map 的类,它有一个名为 tiles 的字典。 class Map { public Dictionary tiles = new Dictionary
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
当我尝试解码这个 json 时: "polls": [ { "title": "title", "date": "date", "summary": "summary", "stats
我想解析 json,但 Xcode 显示此消息:keyNotFound(CodingKeys(stringValue: "Id", intValue: nil), Swift.DecodingErro
我正在尝试通过网络解析 JSON 数据。下面你可以看到魔法发生的地方。 func getBookingsForDate(date: String, completionHandler: @escapi
我有一本充满列表的字典。在我向字典添加新键之前,我检查它是否已经在字典中。如果是这样,我将该对象添加到列表中。如果不是,我创建一个新对象并使用键将其添加到字典中。问题是 Dictionary.Cont
已编辑 您好,我是第一次使用可编码协议(protocol):我的 JSON 响应(使用 POSTMAN)是: [ { "FltId": "928", "Carrier": "AS",
我的 View 中有一个帮助程序方法,它动态地呈现整个表单。现在我想添加对 Asp.Net MVC RC 2 中可用的客户端验证的支持。 以下是我用来将验证摘要字段呈现到表单上的代码。 _viewPa
我确实在堆栈溢出中看到了很多类似的问题,但似乎没有人与我的情况相似。我是结合框架工作的新手,我花了一整个下午才弄清楚出了什么问题,但仍然停留在这里...... Xcode 给了我以下错误,我所做的是使
当您尝试访问不在字典中的键时(例如),这是您获得的堆栈跟踪: at System.ThrowHelper.ThrowKeyNotFoundException() at System.C
我是一名优秀的程序员,十分优秀!