본문 바로가기

Develop/Objective-C

JSON(JavaScript Object Notation) 으로 데이터 받기

JSON은 XML의 대안으로 새롭게 떠오른 문자열로 표현된 데이터 포맷입니다.

파싱속도도 XML보다 빠르고요. Objective-C에서 만큼은 XML보다 JSON 쓰는게

여러모로 편한 점이 많습니다. 아래 코드 토막을 잠깐 봅시다.

 

[ 자료구조를 JSON 문자열로 변환하기 ]

SBJsonWriter* jsonWriter = [[SBJsonWriter alloc] init];


NSArray* array = [[NSArray alloc] initWithArray:someArray];

NSDictionary* dictionary = [[NSDictionary alloc] initWithDictionary:someDictionary];

NSString* arrayJsonString = [jsonWriter stringWithObject:array];

NSString* dictionaryJsonString = [jsonWriter stringWithObject:dictionary];

[jsonWriter release];

 

[ JSON문자열을 자료구조로 변환 ]

- ( void ) receivedJSON : ( NSString* ) json {


// json이 배열 형태의 정보라면...

NSArray* array = [json JSONValue];


// json이 사전 형태의 정보라면...

NSDictionary* dictionary = [json JSONValue];

}

 

위와 같이 NSArray, NSDictionary를 손쉽게 문자열로,

또는 문자열을 다시 NSArray,NSDictionary로

손쉽게 변환해서 여러모로 유용하게 쓸 수 있습니다.

특히 서버랑 데이터 주고 받을 때 좋습니다.

 

JSON 라이브러리는 아래 링크에서 다운 받아서 사용하시면 됩니다.

소스를 프로젝트에 포함시키고 JSON.h를 #import하기만 하면 됩니다.

https://github.com/stig/json-framework/downloads

출처 : 네이버 맥부기 카페 오동(mysticodoi)님 글~


ex)--------------------------------------------------------------------------------
JSON의 개요 http://json.org/json-ko.html
JSON으로 Http Request 결과를 파싱하기 http://alones.kr/1523
------------------------------------------------------------------------------------

- googling result 
1. JSON considerably reduces network traffic compared to XML. This is very important for wireless apps.
JSON 은 XML에 비해 네트워크 트래픽을 상당히 감소시킨다.. 무선 어플리케이션 쪽에서 이 문제는 상당히 중요하다.

2. XML datastream will be bigger than JSON for the same data.

3. XML은 가독성은 좋치만 XML을 생성하는 서버와 생성된 XML을 파싱하는 클라이언트에 많은 부하를 주는 단점이 있다.
   또 XML 구조를 트리 형태로 자료를 파싱하기 때문에 메모리를 많이 잡아먹게 된다.
   따라서 많은 양의 데이터를 처리할때는 JSON을 사용하는 것이 좋다.