Свифт 3 разбор json

У меня проблемы с обновлением моего приложения, поскольку Alamofire и SwiftyJSON еще не поддерживают Swift 3. У меня есть URL-адрес, который возвращает мне json следующим образом:

{
    "products": [
        {
            "body_html":"",
            "created_at":"2016-03-02T13:56:18+03:00",
            "id":489759251,
            "handle":"product",
            "options":[
                {
                    "id":627488838,
                    "product_id":489759251,
                    "name":"Title",
                    "position":1,
                    "values":[
                        "Default Title"
                    ]
                }
            ],

        },

        {
            "body_html":"",
            "created_at":"2016-03-08T05:17:55+03:00",
            "id":530420915,
            "handle":"product-2",
            "options":[
                {
                    "id":6319359750,
                    "product_id":530420915,
                    "name":"Title",
                    "position":1,
                    "values":[
                        "Default Title"
                    ]
                }
            ],

        },
    ]
}

Мне нужно уметь анализировать этот json и перечислять все возвращаемые продукты, а также иметь возможность читать любые конкретные атрибуты и подопции каждого.

Я проверил некоторые другие вопросы здесь, нашел несколько решений и смог получить данные JSON и распечатать их, как указано выше. Но я не мог разобрать это.

let shopUrl = "https://\(apiKey):\(password)@\(hostname)" + "/admin/products.json"

let url = URL(string: shopUrl)
URLSession.shared.dataTask(with:url!, completionHandler: {(data, response, error) in
    if error != nil {
        print(error)
    } else {
        do {
            let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String:Any]
            print(json)
        } catch let error as NSError {
            print(error)
        }
    }
}).resume()

Любая помощь?

Ответы на вопрос(2)

Ваш ответ на вопрос