【发布时间】:2021-06-11 16:43:53
【问题描述】:
我是 Swift 新手,正在尝试将 HTTP 响应解包到 Swift 对象中。以下是我得到的响应格式。
{
"data": {
"task": [
{
"id": "65eea256-e497-4426-b462-18790bdaf9da",
"title": "First task",
"user_id": "zR3vTSf771crIau65gkrZnVzRIj2",
"updated_at": "2021-06-09T18:38:45.300793+00:00",
"created_at": "2021-06-09T18:38:45.300793+00:00"
},
]
}
}
我想将上述"task" 的JSON 数组转换成[Task] 的Swift 数组。
问题:"task" 部分是唯一在 API 调用结果中有所不同的部分。换句话说,如果我要查询 projects,它会在 JSON 中显示"project"(代替“task”),同时保持整体结构不变。
这是我使结果通用的尝试,但我缺少 JSON 属性 "task"。如果我在结构中添加属性,那么它将无法跨查询重用,并且我最终会得到每个类型的结果结构。
struct Result<T:Codable> : Codable {
let data: [T]
}
这映射到(这是错误的!)
{
"data": [
{
"id": "65eea256-e497-4426-b462-18790bdaf9da",
"title": "First task",
"user_id": "zR3vTSf771crIau65gkrZnVzRIj2",
"updated_at": "2021-06-09T18:38:45.300793+00:00",
"created_at": "2021-06-09T18:38:45.300793+00:00"
},
]
}
【问题讨论】:
-
请不要将您的对象称为
Result。这将与Swift.Result发生冲突。 -
@Sulthan 感谢您指出这一点。对我来说绝对是新事物:)