【发布时间】:2018-10-04 16:24:18
【问题描述】:
我要解析这个 JSON:
{
"status": 1,
"member": {
"id": "3",
"member_no": "1111",
"username": "uname",
"name": "name",
"email": "user@name.com",
"phone": "123 123",
"point": "100",
"expiry": "2019-09-22",
"grade": {
"id": "2",
"name": "Member"
}
}
}
我创建了这个结构:
struct User: Codable {
var status: Int?
var member: Member?
var msg: String?
struct Member: Codable {
var id: Int?
var member_no: String?
var username: String?
var name: String?
var email: String?
var phone: String?
var point: String?
var expiry: String?
var grade: Grade?
struct Grade: Codable {
var id: Int?
var name: String?
}
}
}
并用它来解码:
let decoder = JSONDecoder()
let user = try decoder.decode(User.self, from: data)
但是我收到了这个错误:
无法读取数据,因为它的格式不正确。
如果struct只有一层也没问题:
struct User: Codable {
var status: Int?
var msg: String?
}
如何编写一个结构来匹配这个 JSON?
【问题讨论】:
-
id不是整数。 -
它可以是 Int 取决于响应。我们可以迅速采取任何我们想要的方式
-
@AdityaSharma 不,它不能。看看 JSON。这是一个字符串。它不会因为您将属性键入为 Int 而神奇地变成 Int。
-
哦,对不起
-
以后解析 JSON 时不再使用
print(error.localizedDescription),始终使用print(error)。它会向您显示实际错误 Expected to decode Int but found a string/data instead 以及受影响的 CodingKey 而不是更通用和误导性 无法读取数据...