【发布时间】:2020-02-19 03:21:02
【问题描述】:
我目前正在使用一个处理公交车预测的 API。对于某个停靠点的预测,返回的 JSON 有一个有趣的怪癖。当有多个停止预测时,JSON 看起来像这样:
...
"direction": {
"prediction": [
{
"affectedByLayover": "true",
"block": "241",
"dirTag": "loop",
"epochTime": "1571785998536",
"isDeparture": "false",
"minutes": "20",
"seconds": "1208",
"tripTag": "121",
"vehicle": "1698"
},
{
"affectedByLayover": "true",
"block": "241",
"dirTag": "loop",
"epochTime": "1571787798536",
"isDeparture": "false",
"minutes": "50",
"seconds": "3008",
"tripTag": "122",
"vehicle": "1698"
},
{
"affectedByLayover": "true",
"block": "241",
"dirTag": "loop",
"epochTime": "1571789598536",
"isDeparture": "false",
"minutes": "80",
"seconds": "4808",
"tripTag": "123",
"vehicle": "1698"
}
],
"title": "Loop"
}
...
但是,当只有一个停止预测时,JSON 看起来像这样:
...
"direction": {
"prediction":
{
"affectedByLayover": "true",
"block": "241",
"dirTag": "loop",
"epochTime": "1571785998536",
"isDeparture": "false",
"minutes": "20",
"seconds": "1208",
"tripTag": "121",
"vehicle": "1698"
}
"title": "Loop"
}
...
请注意,“预测”不再位于数组中——我认为使用 Swift Codable 类型解码 JSON 时事情会变得复杂。对于“方向”和“预测”,我的模型看起来像这样
struct BTDirection: Codable {
let title: String!
let stopTitle: String!
let prediction: [BTPrediction]!
}
struct BTPrediction: Codable {
let minutes: String!
let vehicle: String!
}
基本上发生的事情是BTDirection 中的prediction 正在寻找一个BTPrediction 数组,但是在上面的第二种情况下,这不是一个数组,因此解码失败。如何让我的模型更灵活地同时容纳数组或单个对象?理想情况下,在第二种情况下,prediction 仍然是单个BTDirection 的数组。对此的任何帮助将不胜感激。
【问题讨论】: