Swift3 JSON错误-无法为AnyObject类型的值下标

Swift3 JSON错误-无法为AnyObject类型的值下标,json,swift,swift3,swift2,swift2.3,Json,Swift,Swift3,Swift2,Swift2.3,在从swift2到swift3的转换中获取错误(无法为“AnyObject”类型的值下标)。代码来自github的垄断游戏,使用swift2.3编写 let bundle = Bundle.main let path = bundle.path(forResource: "properties", ofType: "json") var error: NSError? var data: NSData = NSData(contentsOfFile: path!)

在从swift2到swift3的转换中获取错误(无法为“AnyObject”类型的值下标)。代码来自github的垄断游戏,使用swift2.3编写

    let bundle = Bundle.main
    let path = bundle.path(forResource: "properties", ofType: "json")
    var error: NSError?
    var data: NSData = NSData(contentsOfFile: path!)!
    do {
        let json = try? JSONSerialization.jsonObject(with: data as Data, options: JSONSerialization.ReadingOptions.allowFragments) as AnyObject

        if let objects = json as? [AnyObject] {
            for obj in objects {
                var category = Category.special
                switch obj["Group"] as String! {    //error!
                    case "Brown": category = .brown
                    case "LightBlue": category = .lightBlue
                    case "Pink": category = .pink
                    case "Orange": category = .orange
                    case "Red": category = .red
                    case "Yellow": category = .yellow
                    case "Green": category = .green
                    case "Blue": category = .blue
                    default: category = .special
                }

                let name = obj["Name"] as String     //error!
                let price = obj["Price"] as Int      //error!
                let tile = obj["Position"] as Int    //error!
                var rent = 0
                if let r = obj["Rent"] as? Int {    //error! Ambiguous use of "subscript"
                    rent = r
                }

                let property = Property(name: name, category: category, price: price, tile: tile, rent: rent)
                game.tiles.append(property)
            }
    }
} catch {
print("error")
}
JSON: [ { “名称”:“开始”, "立场":一,, “价格”:0, “租金”:0, “组”:“开始” },
等等]

将json指定为字典数组,如
[[String:Any]]
,而不是将其声明为
[AnyObject]

if let objects = (try? JSONSerialization.jsonObject(with: data as Data, options: [])) as? [[String:Any]] {
     for obj in objects {
         var category = Category.special
         switch obj["Group"] as! String {
              case "Brown": category = .brown
              case "LightBlue": category = .lightBlue
              case "Pink": category = .pink
              case "Orange": category = .orange
              case "Red": category = .red
              case "Yellow": category = .yellow
              case "Green": category = .green
              case "Blue": category = .blue
              default: category = .special
         }
         //Add your other code
     }
}

您需要指定
obj
是一个字典,因此您可以执行
obj[“MyKey”]