IOS 반사 획득 속성, JSON 으로 정렬

5350 단어 json
전편 에 이 어 xml 로 직렬 화 하 는 방법 을 소개 합 니 다.
조금 바 뀌 었 을 뿐 입 니 다.
ConvertObjToJSON.h
//
//  ConvertObjToJSON.h
// 
//
//  Created by Elliott on 13-3-5.
//  Copyright (c) 2013  Elliott. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface ConvertObjToJSON : NSObject

+(NSString *)Convert:(id)obj;

@end

ConvertObjToJSON.m
//
//  ConvertObjToJSON.m
//  
//
//  Created by Elliott on 13-3-5.
//  Copyright (c) 2013  Elliott. All rights reserved.
//
#import <objc/runtime.h>
#import "ConvertObjToJSON.h"

@implementation ConvertObjToJSON

+(NSString *)Convert:(id)obj
{
    unsigned int outCount, i;
    objc_property_t *properties = class_copyPropertyList([obj class], &outCount);
    NSString *xml=@"{";
    for(i = 0; i < outCount; i++) {
        objc_property_t property = properties[i];
        NSString *key=[[NSString alloc]initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
        id value=[obj valueForKey:key];
        
        if (value!=nil) {
            //IF NOT NSSTRING,LOOP!!!!!!
            if (![value isKindOfClass:[NSString class]]) {
                xml=[xml stringByAppendingFormat:@"%@:%@,",key,[ConvertObjToJSON Convert:[obj valueForKey:key]]];
            }
            else
            {
                xml=[xml stringByAppendingFormat:@"%@:'%@',",key,value];
            }
        }
        else
        {
            xml=[xml stringByAppendingFormat:@"%@:'%@',",key,@""];
        }
    }
    xml=[xml substringToIndex:xml.length-1];
    xml=[xml stringByAppendingString:@"}"];
    
    //NSLog(@"  :%@",xml);
    
    free(properties);
    
    return xml;
}
@end

호출 방식 은 이전 xml 과 같 습 니 다.
현 재 는 NSSTRING 과 사용자 정의 클래스 만 지원 합 니 다.

좋은 웹페이지 즐겨찾기