Swift 3 json parsing

Estou com problemas para atualizar meu aplicativo, pois o Alamofire e o SwiftyJSON ainda não oferecem suporte ao Swift 3. Eu tenho um URL que me retornará o json da seguinte maneira:

{
    "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"
                    ]
                }
            ],

        },
    ]
}

Eu preciso ser capaz de analisar esse json e listar todos os produtos retornados e ser capaz de ler qualquer atributo e subopção específicos de cada um.

Eu verifiquei algumas outras perguntas aqui e encontrei várias soluções, consegui obter os dados do json e imprimi-los como acima. Mas não consegui analisar.

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()

Qualquer ajuda?

questionAnswers(2)

yourAnswerToTheQuestion