解析 JSON 时没有下标成员的第 "Any" 型


func parseResponseData(response: AnyObject) {
    if let feedData = response["feed"] as? [String: Any]{
        let entryArray = feedData["entry"] as Any
        if let entry = entryArray as? [Any]{
            for object in entry{
                print(object)
                let appName = object["category"] as [String: Any]  // Error: Type "Any" has no subscript members.
            }   
        } 
    }
}

由于此错误,我无法解析响应,任何线索如何解决此问题。

杰伦响应

试试这个,entryArray是一个String : Any数组

func parseResponseData(response: AnyObject) {
    if let feedData = response["feed"] as? [String: Any]{
        let entryArray = feedData["entry"] as Any
        if let entry = entryArray as? [[String: Any]] {
            for object in entry {
                print(object)
                let appName = object["category"] as? [String: Any]
            }
        }
    }
}

您必须告诉编译器所有下标集合类型的实际类型,Any是不够的。

对 JSON 字典使用类型别名很有帮助

typealias JSONDictionary = [String:Any]
func parseResponseData(response: Any) {
    if let feedData = response["feed"] as? JSONDictionary,
     let entryArray = feedData["entry"] as? [JSONDictionary] {
        for object in entryArray {
            print(object)
            if let category = object["category"] as? JSONDictionary {
                print(category)
            }
        } 
    }
}

最新更新