KnP House for Daily

Tizen Native JSON parsing 본문

Tizen/Tizen 개발

Tizen Native JSON parsing

K.ung 2014.05.22 16:14

Tizen Native JSON 파싱 하는 법을 알아 보쟈.



위 그림은  Tizen::Web::JSON 다이어그램이다. 


TIZEN도 json 파싱을 위한 클래스들이 존재 한다.


 json TYPE별로

  • OBJECT
  • ARRAY
  • STRING
  • NUMBER
  • BOOL
  • NULL
이 있다,

JSON 파싱 하려면 요약해서 말하자면 

문서를  JsonParser로 JSON형식으로 바꿔주고, IJSONVALUE로 변환 하여 각 TYPE에 맞게 Casting 하여 주면 끝나는 아주 간단하다. 요약해서 말하자면 그렇다.

이제 자세히 알아보쟝.

앞서 블로그 한 Tizen에서 HTTP 연결하는 과정에 이어서 진행 해보겠다.


1. URL에 접근 하여 CONNECTION 하쟈.

2. 접근 한 HTML문서를 열어 BODY를 가져오자.


pBuffer 변수에 ReadBodyN() 메서드로 BODY 부분만 저장한다.

(여기서 메서드에 N이 붙어있으면 꼭 나중에 delete를  해주라는 명시이다.)


3. JsonParser 로 JSON을 가져오자.


앞서 pBuffer에 담겨진 내용을 이용한다.



ByteBuffer에 담겨진 내용을 JsonParser::ParseN()으로 JSON-인코딩해준다. ParseN()의 parameter는 ByteBuffer형식도 있기 때문에 GetBodyN()의 리턴 이 ByteBuffer이여서 바로 넘겨줄 수 있다.(Tizen::Base::String도 가능)

HTML에 요청한 것에서 가져오 BODY내용이 JSON 형식으로 된게 아니라 그냥 일반 STRING문서형식이기 떄문에 인코딩 과정을 거쳐서  IJsonValue 에 넘겨 준다.

IJsonValue는  위 그림의 다이어그램을 보면 JSON이 어떤 TYPE인지 알 수 있는 TYPE들의 인터페이스이다.

4. IJsonValue에 있는 JSON이 어떤 TYPE인지 체크

IJsonValue Reference를 살펴 보면



GetType() 으로 JSON의 타입을 알 수 있다.



위와 같이 어떤 TYPE인지 체크하여 원하는 flow를 짜면 된다.




실상 Reference보며 흐름을 잘 따라가면 어렵지 않게 할 수 있다. 근데... 이게 참 웹에서 요청하여 ParserN()으로 JSON인코딩 할떄 문제가 발생하여 잘 안돼는 경우도 있더라. 


아직 문제점을 찾고 있는데.. chunked type일경우에 문제인지... 흠ㅎ.ㅁ흠흠흠


암튼 끝


다음 장에서 타입에 관련된 걸 알아보쟈~

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

'Tizen > Tizen 개발' 카테고리의 다른 글

Tizen Native App Thread  (0) 2014.05.25
Tize Native JSON TYPE별 사용법  (0) 2014.05.22
Tizen Native JSON parsing  (0) 2014.05.22
Tizen Native App HTTP 예제  (0) 2014.05.19
Tizen Native App SceneManager  (0) 2014.05.16
Tizen Native User Inteface 구조  (0) 2014.05.15
0 Comments
댓글쓰기 폼