Исходя из Java, меня это тоже смутило (как отсутствие настоящего логического значения, так и представление SBJson); 2-й пример BOOL, конечно, не работает:
BOOL bDir = ((NSNumber*)[obj objectForKey:@"isDirectory"]).intValue;
//BOOL bDir = [obj objectForKey:@"isDirectory"];
type = bDir ? MI_DIRECTORY : MI_FILE;