달력

052012  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

'전체'에 해당되는 글 1건

  1. 2011/07/24 SBJson 사용하기
이 글은 Xcode 4.0.2 / iOS SDK 4.3.2 환경을 기준으로 작성되었습니다.

 최근에는 XML의 대안으로 JSON 포멧이 떠오르는 것 같습니다. 간결한 문법에 대체로 XML에 비해 상대적으로 적은 용량으로 표현할 수 있어 스마트폰의 통신 데이터로 손색이 없다고 보여집니다. 아무래도 3G 환경에서는 속도의 측면도 있고 통신비에 대한 부담도 있기 때문에 JSON은 생산성과 효율성을 두루 아우르는 좋은 방향이 되어줄 것입니다. 서론이 길었는데, 결국 이 글은 iOS 환경에서 JSON 데이터를 다루는 방법에 대해서 다루겠다고 꺼낸 이야기입니다.

SBJson은 Mac과 iOS 환경에서 JSON 데이터를 다루는 대표적인 프레임워크 입니다. 정말 핵심을 잘 잡고 심플하게 구현된 프레임워크라 생각됩니다. 사용법도 간단하고 프로젝트에 적용하기도 용이하여 적극 추천하는 바입니다.

다운로드페이지
이 글을 작성하는 현재 3.0.1 버전이 공개되어 있습니다.

다운로드 받은 파일의 압축을 해제하고, 포함된 모든 소스파일을 적용하려는 프로젝트에 다음과 같은 형태로 추가해주면 됩니다.


반드시 똑같은 형태여야 하는 것은 아니고, 중요한 것은 Xcode 프로젝트 타겟의 Compile Sources 설정에서 SBJson의 소스파일들도 컴파일하도록 추가되어야 한다는 점입니다.




사용방법은 간단합니다.
사용할 소스파일의 상단에서 다음과 같이 SBJson.h 파일을 import 해줍니다.
#import "SBJson.h"

그 후, 용도에 따라 SBJsonParser 또는 SBJsonWriter 클래스의 인스턴스를 생성하여 JSON 데이터를 다루면 됩니다.

SBJsonParser 사용 예제
NSString* jsonString = @"{\"name\":\"kzerse\", \"sex\":\"male\"}";

SBJsonParser* parser = [ [ SBJsonParser alloc ] init ];

NSMutableDictionary* person = [ parser objectWithString: jsonString ];
[ person retain ];

[ parser release ];

NSLog( @"이름: %@", [ person valueForKey: @"name" ] );
NSLog( @"성별: %@", [ person valueForKey: @"sex" ] );

SBJsonParser의 objectWithString: 메소드의 반환값은 JSON 데이터에 따라 NSMutableDictionary 또는 NSMutableArray 객체가 됩니다. SBJsonParser의 데이터 변환 규칙은 다음과 같습니다.
  • null > NSNull
  • string > NSString
  • array > NSMutableArray
  • object > NSMutableDictionary
  • true > [ NSNumber numberWithBool: YES ]
  • false > [ NSNumber numberWithBool: NO ]
  • integer up to 19 digits > [ NSNumber numberWithLongLong: integer ]
  • all other numbers > NSDecimalNumber

SBJsonWriter 사용 예제
NSMutableDictionary* anAnimal = [ [ NSMutableDictionary alloc ] init ];
[ anAnimal setValue: @"사자" forKey: @"name" ];
[ anAnimal setValue: @"고양이과" forKey: @"family" ];

SBJsonWriter* writer = [ [ SBJsonWriter alloc ] init ];
[ writer setHumanReadable: YES ];

NSString* jsonString = [ writer stringWithObject: anAnimal ];

[ writer release ];
[ anAnimal release ];

NSLog( @"%@", jsonString );

SBJsonWriter의 stringWithObject: 메소드를 사용할 때, 전달하는 인자는 NSDictionary 또는 NSArray 값이며 데이터 변환 규칙은 다음과 같습니다.
  • NSNull > null
  • NSString > string
  • NSArray > array
  • NSDictionary > object
  • [ NSNumber numberWithBool: YES ] > true
  • [ NSNumber numberWithBool: NO ] > false
  • NSNumber > number

SBJson을 사용할 때 주의할 점은, JSON 포멧을 엄격하게 준수해야 한다는 점입니다. 흔히 실수할 수 있는 것은 많은 브라우저에서 다음과 같은 JSON 데이터는 유효하게 동작합니다만, 올바른 문법은 키 값도 문자열 리터럴로 표현해야 한다는 점입니다.
{ name: "kzerse", sex: "male" }; // 대체로 브라우저들이 정상적으로 해석해줍니다.
{ "name": "kzerse", "sex": "male" }; // 올바른 표기법은 이와 같습니다.

이 글의 목적은 SBJson을 간단하게 접해보는 데 있습니다. SBJson의 상세한 내용은 SBJson Documentation 페이지를 참고하시기 바랍니다.


유익한 내용을 담아본다고 블로그를 재개장했는데, 온갖 사념만 늘어놓고 있는 것 같아서 맘먹고 하나 작성해보았습니다. 이런 글은 항상 위키로 적어왔기 때문에, 시행착오도 좀 있었고 글도 별로 매끄럽게 적지 못한 것 같습니다. 대체로 이런 글의 방향은 주로 이와 같이 간단한 예제와 함께 소개하는 형태로 빠르게 간략화된 정보를 전달하는 데 두고자 합니다. 혹시나 이 누추한 곳에 들려주신 여러분의 달기도 쓰기도 한 여러 의견들을 감사히 듣도록 하겠습니다.
 
저작자 표시 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 얘기 > iOS' 카테고리의 다른 글

SBJson 사용하기  (0) 2011/07/24
Posted by kzerse