我如何从这个数组中快速获取菜单

Posted

技术标签:

【中文标题】我如何从这个数组中快速获取菜单【英文标题】:How do i get menu from this array swift 【发布时间】:2016-08-12 16:14:40 【问题描述】:

所以我有这个 JSON 数据 Link 并且我想从中获取菜单项,我正在使用 Alamofire swift。这个我试过了。

Alamofire.request(.GET, url!, headers: headers).responseJSON  (response) in
        let result = response.result

        if response.result.isSuccess
            let jsonObj = JSON(result.value!)

            if let ff = jsonObj["Items"]["Menus"] as? [String: AnyObject]
                print(ff)
            
        

    

【问题讨论】:

当你尝试这个时会发生什么? 【参考方案1】:

您的Items 包含Array 而不是Dictionary,因此您需要像这样访问它的第一个对象。

 if let ff = jsonObj["Items"][0]["Menu"] as? [String: AnyObject]
     print(ff)
 

编辑:尝试从jsonObj获取单独的对象

let jsonDic = jsonObj as! [String: AnyObject]
if let items = jsonDic["Items"] as? [[String: AnyObject]]  
    if let menu = items[0]["Menu"] as? [String: AnyObject] 
        print(menu)
    

注意:密钥是Menu 而不是Menus

【讨论】:

我没有打印任何东西 你把Menus改成Menu了吗 为什么 Stringg 有 2g ? 对不起,错误设置为数组,检查这一行if let menu = items[0]["Menu"] as? [String: AnyObject] 现在将用字典更正 我建议使用guard let 而不是if let。此外,您可以将多个 lets 链接到同一个 if/guard 语句中。例如,guard let items = jsonDic["Items"] as? [[String: AnyObject]], menu = items[0]["Menu"] as? [String: AnyObject] else return

以上是关于我如何从这个数组中快速获取菜单的主要内容,如果未能解决你的问题,请参考以下文章

menustrip控件 如何获得2级菜单个数

如何从多个数组中获取所有组合?

将动态数据从数组对象插入到引导模式中 - vanilla javascript

如何从 Java 中的未排序数组中快速获取前 N 个出现项?

Xcode怎样查看数组中每一个数的值?

算法常识——快速排序