У меня есть json, который выглядит следующим образом:
let jsonString = """
{
"data": [
{
"name": "Apple",
"price": 44,
"available": true
},
{
"name": "Pear",
"price": 27,
"available": false
}
],
"some_stuff": [],
"some_other_stuff": []
}"""
Моя цель - проанализировать содержимое массива data
, особенно в структуре, которая не заботится о атрибуте availibility
,Меня не волнует возвращаемое значение some_stuff
и some_other_stuff
в том, что json.
- Первый вопрос: могу ли я проигнорировать событие этих свойств, если они являются частью ответа на том же уровне, что и "данные "которые меня интересуют? Если да, то как мне представить и пустой массив типа, который я игнорирую, потому что я получаю только пустые массивы? (Для этой части я решил представить его как массив произвольно выбранного типа Int?)
Я создал структуру:
struct Fruit: Codable {
let name: String
let price: Int
}
И выше вид суперструктуры:
struct WholeResponse: Codable {
let data: [Fruit]
let someStuff: [Int?]
let someOtherStuff: [Int?]
enum CodingKeys: String, CodingKey {
case data
case someStuff = "some_stuff"
case someOtherStuff = "some_other_stuff"
}
struct Fruit: Codable {
let name: String
let price: Int
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let data = try container.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
name = try data.decode(String.self, forKey: .name)
price = try data.decode(Int.self, forKey: .price)
}
func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
var data = container.nestedContainer(keyedBy: CodingKeys.self, forKey: .data)
try data.encode(name, forKey: .name)
try data.encode(price, forKey: .price)
}
}
Но после этого я довольно застрял:
let jsonData = jsonString.data(using: .utf8)!
let jsonDecoder = JSONDecoder()
let fruits = try jsonDecoder.decode(WholeResponse.self, from: jsonData)
Я думаю, что что-то упускаю из-за представления моих данных и, возможно, усложняю ситуацию, но вы можете помочьмне разобрать этот массив данных?