Нужна помощь в разборе JSON - PullRequest
0 голосов
/ 16 мая 2019

Я получаю данные из API и мне нужно отфильтровать массив словарей на основе тега «total_price», теперь условие - я хочу только те рейсы, цена которых находится в диапазоне от «35,0» до «55,0»

{
    airline = 9W;
    "available_seats" = "<null>";
    bags = (
    );
    currency = USD;
    destination = 38551;
    origin = 39232;
    "price_details" = {
    };
    "rate_plan_code" = WIP;
    routes = (
    );
    taxes = "17.51";
    "total_price" = "31.7";
}

Поскольку тег total_price идет в виде строки, я не уверен, как его фильтровать, используя предикат и т. Д. Мне нужно отфильтровать сам ответ json, для этого ответа API не было создано моделей.

1 Ответ

1 голос
/ 16 мая 2019

Поскольку вы хотите фильтровать цены, я предполагаю, что вы получили массив, и я также предположил, что в моем коде этот массив находится внутри словаря с ключом «полеты», поэтому вам нужно заменить этот ключ на все, что у вас есть

do {
    if let json = try JSONSerialization.jsonObject(with: data) as? [String: Any] {
        if let flights = json["flights"] as? [[String: Any]] {
            let filtered = flights.filter {
                if let str = $0["total_price"] as? String, let price = Double(str) {
                    return price >= 35.0 && price <= 55.0
                }
                return false
            }
            print(filtered.count) // replace with more meaningful code :)
        }
    }
} catch {
    print("Decode failed: \(error)")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...