0

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

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

我的问题来自 nsmutabledictionary 如何访问“打开”或“关闭”键的值?

我会非常感谢你的帮助。

4

2 回答 2

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"]];

取决于您要将结果用于什么。

于 2013-06-25T16:50:01.570 回答
0

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

于 2013-06-25T16:48:35.973 回答