【发布时间】:2018-11-14 14:13:33
【问题描述】:
我有以下 JSON 响应。我想使用 .keys 方法获取“数据”的所有键,即 [“rules”、“preference”、“goals”]。但我无法使用 .keys 功能获得所有键的数组。我也附上了我的代码 sn-p。如果您遇到过这个问题,请建议我摆脱这种担忧。
虽然,我可以使用 ObjectMapper 和本机 Dictionary 对象获取这些 allKey。我只需要知道为什么我无法使用 Codable 实现这一目标。
我的 json 响应
{
"statusCode": 200,
"status": "success",
"message": null,
"data": {
"rules": {
"goals": {
"min": "1",
"max": "3"
}
},
"preference": [
1,
2,
3
],
"goals": {
"total": 4,
"data": []
}
}
}
我的代码片段:
struct MeetingsDataModal: Codable {
let statusCode: Int?
let status: String?
let message: String?
let data: Results?
enum CodingKeys: String, CodingKey {
case statusCode = "statusCode"
case status = "status"
case message = "message"
case data = "data"
}
func allkeys() {
}
}
struct Results : Codable {
let rules: Rules?
let preference: [Preference]?
let goals: Goals?
enum CodingKeys: String, CodingKey {
case rules = "rules"
case preference = "preference"
case goals = "goals"
}
}
struct Rules : Codable {
}
struct Preference : Codable {
}
struct Goals : Codable {
}
我的期望
let content = try JSONDecoder().decode(MeetingsDataModal.self, from: (response as? Data)!)
print(content.data.keys)
但我明白了,
“结果?”类型的值没有成员“密钥”
【问题讨论】:
-
如果有
keys,你为什么会期待?Results有rules、goals和preferences,就是这样。 -
@luk2302 感谢您的回复。我需要获取这些 allKeys 并将其显示在表格视图的部分。其余的数组值,我需要在表格视图的行上显示。
-
allKeys应该是什么?您的 JSON 和映射结构都没有这样的东西。实际预期输出是多少? -
是的。我的预期输出是[“规则”、“偏好”、“目标”]。我可以在 objectMapper 中获取这些方法(.keys)。
-
知道
Decodable创建的是结构,而不是字典
标签: ios json decode codable swift4.2