Type ‘Any’ Has no Subscript Members in xcode 8 Swift 3 [duplicate]

Try this:

let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String:AnyObject]

Safe way:

do {
    if let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as? [String:Any] {
        print(json)
    }
} catch let err{
    print(err.localizedDescription)
}

You have to cast type Any to Swift dictionary type [String:AnyObject].

Edit: Swift 3
In swift 3 the purpose of AnyObject is more clarified. So more favourable Swift Dictionary type will be [String:Any].

Any is an alias for any data type.
AnyObject is an alias for any data type derived from a class.

For more info visit: https://craiggrummitt.com/2016/09/16/any-vs-anyobject-vs-nsobject-in-swift-3/

Leave a Comment