2011-02-17 2 views
4

HttpPost 요청을 통해 원격 서버에서 일부 정보를 추출해야하는 일반적인 경우에 직면합니다. 일부 날씨 정보를 검색하는 날씨 앱의 경우를 상상해보십시오.JSON VS 안드로이드에서 HttpRequest를 구문 분석하기위한 간단한 문자열 조작

서버가 long 입력 스트림을 보내고이 스트림에서 일부 정보를 추출하는 데 관심이 있습니다. 우리는 메모리 - CPU 환경에 있다는 것을 명심하십시오.

1) 우리는 정보를 추출하기 위해 JSON 또는 XML 파서를 사용

우리는 두 가지 옵션이 있습니다.

은 권장되는 방법이지만, 몇 가지 단점이 있습니다

  • 그것은 우리가 큰 스트림에서 약간의 정보를 원하는 특히, 고통스럽게 자세한입니다.

  • 더 빨라지고 가비지 수집에 더 익숙해야하지만, 위의 경우 (큰 스트림의 정보가 거의 없음)의 경우인지는 확실하지 않습니다. 우리는 크게 쓸모없는 정보를 정기적으로 오프 트리밍으로의 InputStream의 크기를 줄이고, 우리는 컴팩트 한 문자열에서 정보를 추출

    :

2) 우리는 단순한 문자열 조작 (SSM)을 사용합니다. 이를 위해 가비지 수집기의 작업을 줄이기 위해 정적 메서드를 사용하여 필터를 작성할 수 있습니다.

또한이 방법은 몇 가지 단점이 있습니다

  • 나는이 방법이 강하게
  • 우리가 추출 더 많은 정보,이 방법은 느린 낙담 생각합니다. SSM이 느려지는 성능 곡선에는 중요한 포인트가 있다고 생각합니다.
  • JSON 또는 다른 주식 파서보다 유연성이 떨어질 수 있습니다.

뿐만 아니라 몇 가지 중요한 장점 :

  • 간결한, 사람이 읽을 수있는 코드입니다.
  • 기존 필터를 수정하는 것이 어려울 수 있지만 새 필터를 만드는 것이 훨씬 쉽습니다.

    1) 단순한 문자열 조작 큰 더-에는 접근하지 않거나 그것의 사용을 고려하는 것이 합리적이다 :

가 요약하면, 질문은? 2) 이전 질문에 예 (큰 접근법 없음)라고 답한 경우 이유를 설명해 주시겠습니까?

환호 :

+1

모바일 장치와의 통신에 대해 이야기 할 때 필요한 데이터를 줄여야합니다. 그리고 그것은 당신이 선택하는 선택의 문제입니다. –

+0

아쉽게도 서버가 보내는 데이터의 양은 제 통제하에 있지 않습니다. – Mascarpone

+1

SSM을 사용할 때 인간이 읽을 수있는 코드 마크를 장점으로 생각하지 않습니다. 이 문자열은 인간이 아닌 코드에 의해 파싱됩니다. 또한 JSON 용 필터를 만드는 것은 파싱 된 문자열만큼 쉽기 때문에 기존 필터를 수정하기가 어렵 기 때문에 두 번째 방법은 장점이 아니라 단점입니다. –

답변

3

내가 JSON 형식 (어떤 장점이 더 장황하지 XML)의 정보를 요청하는 것이며, 그것의 같은 라인에서 스트림을 처리하여 원하는 데이터를 찾기 위해 이벤트 기반 파서를 사용 서버에서 읽습니다.

메모리가 매우 간단하고 서버에서 제공하는 내용을 변경할 필요가 없습니다.또한 가정에서 재현 한 문자열 분할 솔루션보다 훨씬 신뢰할 수 있고 변경에 저항 할 수 있습니다.

내 웹 사이트에서 JSON 용으로 무료로 매우 light-weight pull parser을 배포했습니다. 기타는 http://www.json.org에서 얻을 수 있습니다.

+1

앞서 언급했듯이 스트림에서 이벤트 기반 구문 분석이 메모리 친숙 함의 열쇠입니다. XML 기반의 이점은 실제로 JSON 용이 아닌 XML 용 Android에 이벤트 기반 구문 분석이 이미 내장되어 있기 때문에 XML을 사용하는 이점을 지적합니다. . +1 파서 링크! – Devunwired

0

나는 JSON을 사용하라는 제안을 두 번째로 들었다. 좋은 경험을 한 파서는 Jackson입니다. 그것은 낮은 메모리 소비를위한 STAX-API뿐만 아니라 POJO를 제공합니다.