[iOS프로그래밍] JSON파싱하기(SBJSON & NSJSONSerialization)


iOS/아이폰 프로그래밍 2012.05.09 10:01



http://seorenn.blogspot.com/2011/04/ios-sbjson-json-framework.html 에서 퍼왔습니다. 


http://stig.github.com/json-framework/

공식사이트에서 다운로드 받거나 github의 소스를 clone 해서 받을 수 있다.

압축을 풀어보면 일반적인 XcodeProject 형식의 내용들이 나타난다. 정확하게 어떤 식으로 사용해야 할 지는 잘 모르겠지만 (...) 내 경우 개발중이던 프로젝트의 Classes 디렉토리에 다음 소스 파일들을 그냥 통째로 복사해 넣었다.

JSON.h
NSObject+JSON.h
NSObject+JSON.m
SBJsonParser.h
SBJsonParser.m
SBJsonStreamParser.h
SBJsonStreamParser.m
SBJsonStreamParserAdapter.h
SBJsonStreamParserAdapter.m
SBJsonStreamParserState.h
SBJsonStreamParserState.m
SBJsonStreamWriter.h
SBJsonStreamWriter.m
SBJsonStreamWriterState.h
SBJsonStreamWriterState.m
SBJsonTokeniser.h
SBJsonTokeniser.m
SBJsonWriter.h
SBJsonWriter.m
SBJson의 Classes 상에 들어있는 소스 전부라고 봐도 된다. -_-;;

사용 방법은 굉장히 단순하였다. 

예제는 JSON을 문자열로 받아서 dictionary 형태로 파싱하는 것.
#import "JSON.h"
import 하는걸 빼 먹으면 안되지 ~_~;;
NSDictionary* dict = [[[SBJsonParser alloc] init] objectWithString:jsonString];
objectWithString은 id 형태의 인스턴스 포인터를 반환한다. 따라서 JSON의 구조에 따라 NSArray * 형식의 데이터가 올 수도 있다. 이 부분은 개발자가 알아서 해야 할 부분이다.

인코딩의 경우도 비슷하다.
NSString* str = [[[SBJsonWriter alloc] init] stringWithObject:dict];
동일하게 NSDictionary 형식의 데이터를 인코더로 집어넣어서 문자열로 JSON 데이터를 받았다.


[추가내용]

 iOS 4 까지는 Foundation 에서 JSON 클래스를 오픈하지 않아서 따로 라이브러리를 사용해야 했는데, iOS 5 에서부터는 JSON 클래스가 오픈되었습니다. 관련 설명 Refrence 추가하며, 추후 따로 포스팅하도록 하겠습니다. 

 http://lambert.tistory.com/498









저작자 표시 비영리 변경 금지
신고

WRITTEN BY
ShakeJ

0 ,