Objective-c 自定对象 转 JSON

81 篇文章 0 订阅

#pragma mark - NSObject to JSON -


static NSDateFormatter *reverseFormatter;


- (NSDateFormatter *)getReverseDateFormatter {

    if (!reverseFormatter) {

        NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

        reverseFormatter = [[NSDateFormatter alloc] init];

        [reverseFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"];

        [reverseFormatter setLocale:locale];

    }

    return reverseFormatter;

}


- (NSDictionary *)dictionaryWithPropertiesOfObject:(id)obj {

    NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    

    unsigned count;

    objc_property_t *properties = class_copyPropertyList([obj class], &count);

    

    for (int i = 0; i < count; i++) {

        NSString *key = [NSString stringWithUTF8String:property_getName(properties[i])];

        id object = [obj valueForKey:key];

        

        if (object) {

            if ([object isKindOfClass:[NSArray class]]) {

                NSMutableArray *subObj = [NSMutableArray array];

                for (id o in object) {

                    [subObj addObject:[self dictionaryWithPropertiesOfObject:o]];

                }

                dict[key] = subObj;

            }

            else if ([object isKindOfClass:[NSString class]]) {

                dict[key] = object;

            } else if ([object isKindOfClass:[NSDate class]]) {

                dict[key] = [[self getReverseDateFormatter] stringFromDate:(NSDate *) object];

            } else if ([object isKindOfClass:[NSNumber class]]) {

                dict[key] = object;

            } else if ([[object class] isSubclassOfClass:[NSObject class]]) {

                dict[key] = [self dictionaryWithPropertiesOfObject:object];

            }

        }

        

    }

    return dict;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值