ios如何从nsmutabledictionary访问json结构中的节点

时间:2013-06-25 16:44:32

标签: ios json

我正在将JSON文件序列化为nsmutabledictonary。 JSON文件具有以下格式:

{
    "menu": {
        "id": "file",
        "value": "Files",
        "menuoffiles": {
            "menuitem": [
                {
                    "value": "New",
                    "date": "03162011"
                },
                {
                    "value": "Open",
                    "date": "03162012"
                },
                {
                    "value": "Close",
                    "date": "03162014"
                }
            ]
        }
    }
}

我的问题是来自nsmutabledictionary如何访问“open”或“close”键的值?

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

试试这个(你不能一步完成,因为你不能在字典的同时索引数组):

NSArray *menuItems = [dict valueForKeyPath:@"menu.menuoffiles.menuitem"];

现在你可以迭代:

for (NSDictionary *menuItem in menuItems) {
    if ([[menuItem objectForKey:@"value"] isEqualToString:@"Open"]]) {
        //...
    }
}

或过滤:

NSArray *openTimes = [menuItems filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"value == %@", @"Open"]];

取决于你将要使用的结果。

答案 1 :(得分:0)

因此,最好的方法就是使用NSLog打印出字典的格式。无论如何,您应该能够通过objectForKey访问顶级对象,然后通过objectForKey访问内部级别的对象,或者如果它是数组而不是字典则通过迭代它们。