코딩하는 나귀

JSON 에서 한글이 들어가면 죽길래 급하게 만들어봤습니다.

이미 기능을 JSON에서 지원하고 있는데 제가 못찾았을 가능성도 있으며,

테스트를 몇번 못해봐서 버그가 있을 수도... 버그를 발견하신 분은 꼭 댓글을 부탁드립니다~~~!!! 

NSDictionary 클래스를 확장하여 사용하였습니다.

코드는 UTF8로 되어 있지만 인코딩 코드만 바꾸셔서 사용하시면 다른 인코딩도 되겠죠~?


<헤더부분>

#import <Foundation/Foundation.h>


@interface NSDictionary(UTF8)


- (NSDictionary*)dictionaryByUTF8Encode;

- (NSDictionary*)dictionaryByUTF8Decode;


@end 


<구현부분>

#import "NSDictionaryUTF8.h"



@implementation NSDictionary(UTF8)



- (NSDictionary*)dictionaryByUTF8Encode

{

NSMutableDictionary* encodeDict = [NSMutableDictionary dictionary];

NSArray* keys = [self allKeys];

for (NSString* key in keys) {

NSObject* obj = [self objectForKey:key];

if ([obj isKindOfClass:[NSMutableString class]]) {

NSString* stringObj = (NSString*)obj;

[encodeDict setValue:[stringObj stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] forKey:key];

} else if ([obj isKindOfClass:[NSDictionary class]]) {

[encodeDict setValue:[(NSDictionary*)obj dictionaryByUTF8Encode] forKey:key];

} else {

[encodeDict setValue:obj forKey:key];

}

}

return encodeDict;

}



- (NSDictionary*)dictionaryByUTF8Decode

{

NSMutableDictionary* decodeDict = [NSMutableDictionary dictionary];

NSArray* keys = [self allKeys];

for (NSString* key in keys) {

NSObject* obj = [self objectForKey:key];

if ([obj isKindOfClass:[NSMutableString class]]) {

NSString* stringObj = (NSString*)obj;

[decodeDict setValue:[stringObj stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] forKey:key];

} else if ([obj isKindOfClass:[NSDictionary class]]) {

[decodeDict setValue:[(NSDictionary*)obj dictionaryByUTF8Decode] forKey:key];

} else {

[decodeDict setValue:obj forKey:key];

}

}

return decodeDict;

}



@end