iOS开发:对象直接转化成JSON

来源:互联网 发布:硕士论文 知乎 编辑:程序博客网 时间:2024/06/04 17:44
+ (NSDictionary*)getObjectData:(id)obj {    NSMutableDictionary *dic = [NSMutableDictionary dictionary];    unsigned int propsCount;    objc_property_t *props = class_copyPropertyList([obj class], &propsCount);    for(int i = 0;i < propsCount; i++) {        objc_property_t prop = props[i];        NSString *propName = [NSString stringWithUTF8String:property_getName(prop)];        id value = [obj valueForKey:propName];        if(value == nil) {            value = [NSNull null];        }        else {            value = [self getObjectInternal:value];        }        [dic setObject:value forKey:propName];    }    return dic;}+ (id)getObjectInternal:(id)obj {    if([obj isKindOfClass:[NSString class]]       || [obj isKindOfClass:[NSNumber class]]       || [obj isKindOfClass:[NSNull class]]) {        return obj;    }    if([obj isKindOfClass:[NSArray class]]) {        NSArray *objarr = obj;        NSMutableArray *arr = [NSMutableArray arrayWithCapacity:objarr.count];        for(int i = 0;i < objarr.count; i++) {            [arr setObject:[self getObjectInternal:[objarr objectAtIndex:i]] atIndexedSubscript:i];        }        return arr;    }    if([obj isKindOfClass:[NSDictionary class]]) {        NSDictionary *objdic = obj;        NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithCapacity:[objdic count]];        for(NSString *key in objdic.allKeys) {            [dic setObject:[self getObjectInternal:[objdic objectForKey:key]] forKey:key];        }        return dic;    }    return [self getObjectData:obj];}
0 0
原创粉丝点击