相关疑难解决方法(0)

以递归方式从JSON结构中删除空值

我经常发现需要缓存由NSJSONSerialization磁盘创建的数据结构,-writeToFile如果有空值则失败,我需要一个在结构未知时有效的修复.这是有效的,并且允许直接变异,因为NSMutableDictionary本身的实例没有被枚举,但感觉有点hacky.

这是完全正常还是重新创建一棵新树并返回它是绝对必要的?

- (void) removeNullsFromJSONTree:(id) branch
{
    if ([branch isKindOfClass:[NSMutableArray class]])
    {
        //Keep drilling to find the leaf dictionaries
        for (id childBranch in branch)
        {
            [self removeNullsFromJSONTree:childBranch];
        }
    }
    else if ([branch isKindOfClass:[NSMutableDictionary class]])
    {
        const id nul = [NSNull null];
        const NSString *empty = @"";
        for(NSString *key in [branch allKeys])
        {
            const id object = [branch objectForKey:key];
            if(object == nul)
            {
                [branch setObject:empty forKey:key];
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

recursion objective-c nsdictionary nsnull

4
推荐指数
2
解决办法
2645
查看次数

标签 统计

nsdictionary ×1

nsnull ×1

objective-c ×1

recursion ×1