Мне нужно добавить дополнительное логическое поле, чтобы выбрать таблицу марок и моделей.
Исходная структура json:
{
"brands": [
{
"id": "19",
"name": "Audi",
"sort": "1",
"num": 1,
"models": [
{
"id": "190",
"name": "TTS",
"num": 1
},
{
"id": "189",
"name": "TT",
"num": 2
},
{
"id": "188",
"name": "V8",
"num": 3
},
{
"id": "187",
"name": "SQ5",
"num": 4
}
],
......
Мне нужно добавить isExpended: Bool = false в брендах и моделях структур. Поэтому массив должен выглядеть так:
{
"brands": [
{
---> "isExpanded": false,
"id": "19",
"name": "Audi",
"sort": "1",
"num": 1,
"models": [
{
---> "isExpanded": false,
"id": "190",
"name": "TTS",
"num": 1
},
мои модели:
struct auto_data: Decodable {
var brands: [brands]
var gearbox: [gearbox]
var fuel: [fuel]
var version: String
}
struct brands: Decodable {
var id: String
var name: String
var sort: String
var num: Int
var models: [brand_models]
}
struct brand_models: Decodable {
var id: String
var name: String
var num: Int
}
для получения JSON я использую:
func get_data (order_type: String, localization: String, version: String, completion: @escaping ([brands]?) -> Void) {
let encodedBodyParams = "order_type=\(order_type)&localization=\(localization)&version=\(version)"
let url = URL(string: "http://skat.az/forapi/api/get_data.php")
Alamofire.request(url!, method: .post, parameters: [:], encoding: encodedBodyParams, headers: [:]).responseJSON { (response) in
if response.result.isSuccess {
do {
let result = response.data
let data = try JSONDecoder().decode(auto_data.self, from: result!)
completion(data.brands)
} catch {
print("Error: \(error)")
}
print("models ОК!")
} else {
print("error response: \(String(describing: response.error))")
completion(nil, nil, nil)
}
}
}
Я не хочу просматривать все элементы массива и помещать их в другие, с правильной структурой. Есть ли другой способ изменить структуру массива?