1 min read

JSONkit and Exception handling

Having troubles with JSONKit and nil and null exceptions in occasions you can’t understand? This thing happened to me when trying to use something like “self.textview.text = [dictionary valueForKey:@”someKey”];” and I couldn’t understand why I kept receiving extensions about mismatch of the classes and NULL.

Well, the answer is that when JSONKit encounters a value that is NULL, it tries to translate it as accurately as it can to a value of NSDictionary. The correct equivalent would be “nil” but you can’t have an NSDIctionary holding a nil value, so JSONKit uses NSNull. So, when accessing NSDictionary values coming from a JSON source, you need to check for this probability too. 

- (id)jsonFixedValueForKey:(NSString *)key
{
    id value = [self valueForKey:key];
    
    BOOL isNULLorNil = NO;
    
    if (value != nil) {
        if ([value isKindOfClass:[NSNull class]]) {
            isNULLorNil = YES;
        }
    }else{
        isNULLorNil = YES;
    }
    
    if (isNULLorNil) {
        return nil;
    }
    return value;
}

Just place the above code to a new category for NSDictionary and then use something like “[dict jsonFixedValueForKey:@”someKey”]” and now you will receive a nil where the JSON originally had “null”, or you will have the value that this key represents, no matter the class.