在没有数组键的情况下解析 Swift 中的 JSON
Parsing JSON in Swift without array key
我有一个 JSON-响应:
[
[{
"id": "1",
"name": "Toyota",
"model": "Camry"
},
{
"id": "2",
"name": "Nissan",
"model": "Almera"
}
],
{
"count": "1234",
"page": "1"
}
]
我创建了可解码模型:
struct Car: Decodable {
var id: String?
var name: String?
var model: String?
}
我正在尝试像这样提取数据以供测试:
let carsResponse = try JSONDecoder().decode([[Car]].self, from: data)
print(carsResponse[0])
我有一个错误:
本应解码数组,但却找到了字典。
怎么了?
这种格式很糟糕,所以你需要手动解码外层容器,但这并不难:
struct CarResponse: Decodable {
var cars: [Car]
init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()
cars = try container.decode([Car].self) // Decode just first element
}
}
let carsResponse = try JSONDecoder().decode(CarResponse.self, from: data)
print(carsResponse.cars)
我有一个 JSON-响应:
[
[{
"id": "1",
"name": "Toyota",
"model": "Camry"
},
{
"id": "2",
"name": "Nissan",
"model": "Almera"
}
],
{
"count": "1234",
"page": "1"
}
]
我创建了可解码模型:
struct Car: Decodable {
var id: String?
var name: String?
var model: String?
}
我正在尝试像这样提取数据以供测试:
let carsResponse = try JSONDecoder().decode([[Car]].self, from: data)
print(carsResponse[0])
我有一个错误:
本应解码数组,但却找到了字典。
怎么了?
这种格式很糟糕,所以你需要手动解码外层容器,但这并不难:
struct CarResponse: Decodable {
var cars: [Car]
init(from decoder: Decoder) throws {
var container = try decoder.unkeyedContainer()
cars = try container.decode([Car].self) // Decode just first element
}
}
let carsResponse = try JSONDecoder().decode(CarResponse.self, from: data)
print(carsResponse.cars)