skip to Main Content

Please help me to parse this JSON structure. What i want to do is… get specific id and for this id get category_image.
I tried to use Alamofire, but for now nothing…
So basically what i want to get is id and related with this id, category_image.

i tried to parse this way, but i gues its wrong way…

Alamofire.request("http://хх.хх.ххх:хххх/api/v1/institution/get-all-institutions", method: .get, parameters: nil, encoding: URLEncoding.default, headers: nil).responseJSON {
        response in
        switch response.result {
        case .success:
            if let objJson = response.result.value as! NSDictionary? {
                for element in objJson {
                    let data = element as! NSDictionary
                    if let array = data["data"] as! NSArray? {
                        for obj in array {
                            print(obj)
                        }
                    }
                }
            }
        case .failure(let error):
            print("Error: (error)")
        }
    }

JSON:

"data": [
    {
        "id": 1,
        "socials": {
            "vk": "https://vk.com/cafe_teplominsk",
            "instagram": "https://www.instagram.com/teplo_cafe/",
            "facebook": "https://www.facebook.com/cafeteplominsk"
        },
        "short_title": "#тепло",
        "title": "Кафе #тепло",
        "latitude": "53.93820000",
        "longitude": "27.58520000",
        "image": "https://static.relax.by/images/common/catalog_round_logos/d3e4a58f89cdf9ebba2b6759a6e1fe08.jpg",
        "site": "http://cafeteplo.by/",
        "description": "Невозможно представить заведение с более теплой и радушной атмосферой.rnrnПомимо отличного сервиса и качественного обслуживания кафе #Тепло поразит Вас необыкновенным интерьером в стиле Прованс с абажурами и оригинальными декорациями.rnrnХорошо там, где #тепло!",
        "phone": "+375 29 639 22 22",
        "work_time": "С 09:00 до 23.00",
        "category": "Кафе",
        "category_image": "http://95.46.99.250:9095/storage/photos/[email protected]",
        "features": "{"Wi-Fi": "Есть", "Залы": "Зал (85 мест) для некурящих", "Сайт": "cafeteplo.by", "Кухня": "Европейская, Итальянская", "Метро": "Академия наук", "Район": "Советский", "В меню": "Пицца, Обеденное меню, Завтраки, Морепродукты, Стейки, Доставка еды, Десерты, Салаты и холодные закуски", "Банкет": "До 16 чел.", "Музыка": "Тихая фоновая", "Курение": "Запрещено", "Описание": "на портале relax.by", "Парковка": "Есть", "Для детей": "Да", "Кинотеатры": "Октябрь", "Предоплата": "в размере 30%", "Средний счет": "$$", "Кондиционеры": "Есть", "Тип заведения": "Кафе", "способ оплаты": "Наличный расчет, Безналичный расчет, Оплата пластиковой картой", "Пицца на вынос": "Есть", "Разливное пиво": "Zlatý Bažant, Heineken, Ирландское, Бельгийское, Белорусское", "Количество мест": "85", "Торговые центры": "Европа", "Большая компания": "Да", "Дисконтные карты": "карта друга со скидкой 10%", "Популярные места": "парк Дружбы Народов (пл. Бангалор), Логойский тракт", "Быстро перекусить": "Да", "Закрытие заведения": "Да", "Национальная кухня": "Итальянская", "Романтический ужин": "Да", "Предварительный заказ": "существует", "Условия закрытия залов": "50 рублей на человека", "Оплата пластиковой картой": "Есть", "Банкет на открытом воздухе": "Нет", "Условия закрытия заведения": "обсуждается с менеджером", "Организационные возможности": "Банкетное обслуживание, Вечеринки, Выездное обслуживание, Деловые переговоры, День рождения, Конференция, Корпоративное обслуживание, Организация детских праздников, Презентации, Свадьба, Семинар", "Количество залов под мероприятия": "1", "Что клиент может принести с собой": "обсуждается при составлении предзаказа", "Владение персоналом иностранными языками": "Английский"}",
        "address": "Минск, ул.Богдановича 138",
        "created_at": "20.07.2017 13:10:42",
        "updated_at": "29.05.2018 16:12:00"
    },
    {
        "id": 2,
        "socials": {
            "vk": "https://vk.com/mustangcafe",
            "instagram": "https://www.instagram.com/cafemustang.minsk/",
            "facebook": null
        },
        "short_title": "Мустанг",
        "title": "Мустанг",
        "latitude": "53.95360000",
        "longitude": "27.41060000",
        "image": null,
        "site": "https://vk.com/mustangcafe",
        "description": "«Мустанг» — загородное барбекю-кафе с 15-летней историей.  Приехать сюда стоит,  чтобы попробовать оригинальные блюда, приготовленные на огне, такие как сочные стейки, сибас на гриле, ребрышки BBQ, шашлык из баранины и многие другие.rnrnВ кафе «Мустанг» можно проводить различные семейные и корпоративные праздники, свадьбы и выездные регистрации. Максимальное количество гостей — 250 человек (с учетом летней террасы). Есть отдельное банкетное меню.rnrnЕсть три зала: основной с барной стойкой, VIP и банкетный. Летняя терраса представлена 6 отдельно стоящими беседками. А каждую пятницу и субботу в «Мустанге» проходят вечера живой музыки.",
        "phone": "+375 44 775 37 35",
        "work_time": "С 11:00 до 00:00",
        "category": "Кафе",
        "category_image": "http://95.46.99.250:9095/storage/photos/[email protected]",
        "features": "{"Wi-Fi": "Есть", "Залы": "Зал 1 (25 мест), Зал 2 (25 мест), Зал 3 (50 мест)", "Кухня": "Белорусская, Европейская", "В меню": "Шашлык, Обеденное меню, Выпечка, Стейки", "Банкет": "До 100 чел.", "Другое": "Бутылочное Чешское пиво", "Музыка": "Тихая фоновая, Живая музыка", "Курение": "Разрешено, есть зал для некурящих", "Парковка": "Есть", "Предоплата": "По договоренности", "Развлечения": "TV с большим экраном, Актёры, Живая музыка, Звёзды эстрады, Танцоры, Танцпол, Шоу-программа", "Кондиционеры": "Есть", "Тип заведения": "Кафе", "способ оплаты": "Наличный расчет, Безналичный расчет", "Летняя терраса": "Есть", "Популярные места": "Минское море", "Предварительный заказ": "Есть", "Оплата пластиковой картой": "Есть", "Банкет на открытом воздухе": "Да", "Организационные возможности": "Банкетное обслуживание, Вечеринки, Выездное обслуживание, Деловые переговоры, День рождения, Конференция, Корпоративное обслуживание, Организация детских праздников, Презентации, Свадьба, Семинар, Фуршет", "Количество залов под мероприятия": "3", "Что клиент может принести с собой": "Алкоголь, Кондитерские изделия, Фрукты", "Владение персоналом иностранными языками": "Английский, Итальянский"}",
        "address": "Минский р-н, Ждановичский сельсовет, 12 км от трассы Р28 Минск-Молодечно",
        "created_at": "20.07.2017 13:10:42",
        "updated_at": "20.05.2018 20:21:30"
    },

2

Answers


  1. You can try this

    if let array = data["data"] as? [[String:Any]] {
          for obj in array {
                print(obj["id"],obj["category_image"])
           }
    }
    

    //

    struct Root:Decodable {
      let  data: [InnerItem]
    }
    

    //

    struct InnerItem:Decodable {
      let  id: Int
      let  categoryImage:String
    
      private enum CodingKeys : String, CodingKey {
        case id , categoryImage = "category_image"
      }
    }
    

    //

    do {
       let items = try JSONDecoder().decode(Root.self, from: dataOfResponse)
       print(items.data)
    }
    catch {
      print(error)
    }
    
    Login or Signup to reply.
  2. Try this , i created two arrays for storing Id and category_image like this var AllIds = [Int]()
    var Allimages = [String]()

      if let objJson = response.result.value as! [String: Any]? {
                    for (key,value) in objJson {
                        print(key)
                        if let result2:[[String:Any]] = value as? [[String:Any]]{
                            for dict in result2 {
    
                                for (key,value) in dict {
                                    if key == "id" {
                                        if let str: Int = value as? Int {
                                            self.AllTexts.append(str)
                                        }
                                    }
                                    if key == "category_image" {
                                        if let str1: String = value as? String {
                                            self.Allimages.append(str1)
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search