[android] Jackson parser sample With Volleyer

[android] Jackson parser sample With Volleyer

Volley를 더 쉽고 강력하게, Volley Extensions 를 읽다 보니 Jackson이라는 JSON parser가 성능이 좋다는 말이 나와서 예제를 만들어 봤다.

(고수들은 왜 더 쉬운 예제를 만들어주지 않는 걸까? ㅠㅠ)

 

 

일단 http://susemi99.kr/3089 와 기본적인 설정은 같고 jackson-databind 만 추가됐다.

 

 

하나의 객체만 갖고 있을 때

이런  JSON 타입일 때는

 

파싱을 해서 넣어둘 클래스를 만들고

 

.withTargetClass()에 추가해서 호출하면 된다.

 

 

같은 종류 객체의 배열일 때

같은 종류 여러 개가 오는 경우도 있다.

 

이럴 때는 MyItem[].class를 넣으면 된다.

 

 

배열 형태의 top element가 있을 때

올바른 형태라고 볼 수는 없지만, 최상위에 element가 있을 때도 있다.

이런 경우는 저 result가 필요가 없지만, 그래도 top이 아닐 때를 대비해서 적어 놓는다.

 

이런 경우는 한 번 더 감싸야 한다.

다른 방법도 있을 것 같은 느낌이긴 한데, 못 찾겠다 ;;;

 

호출하는 방법은 비슷하다.

 

 

객체를 가진 top element가 있을 때

최상위에 element가 있고, 그 밑에 객체가 있는 변태 형태도 가능하다.

 

이거를 위해 또 하나의 클래스를 만든다.

 

호출 방식도 크게 다르지 않다.

 

 

느낀 점

확실히 일일이 파싱을 하는 것보다 편하다.

다만 굳이 클래스를 안 만들고 한 클래스 안에서 다 해도되는 경우라면 좀 번거로워질 수 있을 것 같다.

 

 

Download Source

source : https://github.com/susemi99/VolleyerJacksonSample

 

 

Convert to JSON

다시 JSON으로 돌리고 싶다면

이렇게 하면 된다.

도움 받은 곳 : http://stackoverflow.com/a/15786175/1025379

  • 이용진

    덕분에 많은 도움이 되었습니다.
    Json에 한글이 포함된 경우에는 한글이 깨지는 문제가 있던데 이 부분 혹시 어떻게 해결하셨는지 알 수 있을까요?

    • 확인은 안해봤지만 인코딩 문제가 아닐까요?
      euc-kr이나 iso-8859같은걸로 만들어져서 넘어오는 건지 확인해보세요

  • Some Like it Hot

    E/Volleyer: Default volleyer is not set. You have to set the default volleyer as first like this code. : volleyer(requestQueue).settings().setAsDefault().done()

    이런 에러는 왜 나는걸까요?