【发布时间】:2019-03-19 12:58:39
【问题描述】:
我正在访问 API 并将 json 响应解码为 User 对象,但我正在尝试更改 JSON API 结构。如果我使用此代码返回一个基本 JSON 对象
let httpURL = "https://dev.test/api/user"
var request = URLRequest(url: url)
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
guard let data = data else {return}
do {
let user = try JSONDecoder().decode(User.self, from: data)
DispatchQueue.main.async {
print(user.email)
}
} catch let jsonErr {
print(jsonErr)
}
}
task.resume()
以及下面的 JSON
{
"id": 2,
"email": "test@example.com",
}
这很好用,但我想更改 API 以返回一组嵌套对象。例如
{
"data": {
"user": {
"id": 2,
"email": "test@example.com"
},
"notifications": [
{
"id": "123",
"notifiable_type": "App\\User"
}
]
}
}
如何解码用户?我已经尝试了这个let user = try JSONDecoder().decode(User.self, from: data.data.user) 和let user = try JSONDecoder().decode(User.self, from: data["data"]["user"]) 的几种变体
bt
【问题讨论】:
-
您的
CodableUser对象是什么样的?还有……这些“嵌套对象集”是什么?