У меня есть статический файл JSON, и я успешно декодирую его обратно. Тем не менее, я действительно изо всех сил стараюсь сохранить его правильно, так как он вложен в несколько слоев. В данный момент консоль распечатывает
["Hamilton", "Chermside", "Coorparoo"]
Однако мне нужно, чтобы он фильтровал и возвращал значения в каждом пригороде, которые подпадают под 500000. Поэтому что-то вроде этого было бы замечательно.
"Hamilton"
"oneBRU": 341000,
"twoBRU": 480000
"Chermside"
"oneBRU": 320000,
"twoBRU": 255000,
"threeBRU": 435000,
"twoBRH": 400000
Статический файл JSON находится внизу. Большое спасибо
var suburbsJson: [Suburb] = []
struct ResponseData: Codable {
var suburbs: [Suburb]
}
struct Suburb : Codable {
var _id: Int
var name: String
var postcode: Int
var prices: SuburbPrices
}
struct SuburbPrices: Codable {
let oneBRU: Int
let twoBRU: Int
let threeBRU: Int
let twoBRH: Int
let threeBRH: Int
let fourBRH: Int
}
func loadJson(filename fileName: String) -> [Suburb]? {
if let url = Bundle.main.url(forResource: fileName, withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let decoder = JSONDecoder()
let jsonData = try decoder.decode(ResponseData.self, from: data)
self.suburbsJson = jsonData.suburbs
let suburb = suburbsJson.map { $0.name }
print(suburb)
// print only suburbs below 500000
return jsonData.suburbs
} catch {
print("error:\(error)")
}
}
return nil
}
ФАЙЛ JSON
{
"suburbs": [
{
"_id": 1,
"name": "Hamilton",
"postcode": 4007,
"prices":
{
"oneBRU": 341000,
"twoBRU": 480000,
"threeBRU": 880000,
"twoBRH": 555000,
"threeBRH": 945000,
"fourBRH": 1200000
}
},
{
"_id": 2,
"name": "Chermside",
"postcode": 4032,
"prices":
{
"oneBRU": 320000,
"twoBRU": 255000,
"threeBRU": 435000,
"twoBRH": 400000,
"threeBRH": 585000,
"fourBRH": 860000
}
},
{
"_id": 3,
"name": "Coorparoo",
"postcode": 4151,
"prices":
{
"oneBRU": 323000,
"twoBRU": 359750,
"threeBRU": 535000,
"twoBRH": 500000,
"threeBRH": 750000,
"fourBRH": 970000
}
}
]
}