문제

나는 내가 쓰고있는 앱에서 JSON 구문 분석을 상당히 많이 사용하고 있습니다. 내가 한 일의 대부분은 이미 Android의 JsonoBject 라이브러리 (JSON-LIB입니까?)를 사용하여 이미 구현되었습니다.

jsonobject는 JSON 문자열에서 모든 것을 절대적으로 생성하는 것으로 보입니다.

내 앱은 현재 G1에서도 꽤 잘 작동합니다.

내 질문은 이것입니다 : Jackson과 같은 스트림 파서를 사용하면 속도와 메모리가 모든 문제의 가치가 있습니까?

문제로 말하면, 나는 이것을 의미합니다. 내가 알 수있는 한, 내장 도서관 대신 Jackson을 사용하는 3 개의 단점이 있습니다.

  1. 외부 라이브러리에 대한 의존성. 이것은 결국 .apk를 더 크게 만듭니다. 큰 거래가 아닙니다.
  2. 앱이 더 취약합니다. 구문 분석은 자동으로 수행되지 않으므로 JSON 텍스트의 변경에 더 취약합니다.
  3. 스트림 파서를 통해 JSON을 구문 분석하는 코드를 작성하는 것은 추악하고 지루합니다.
도움이 되었습니까?

해결책

당신은 자신의 질문에 거의 대답했다고 생각합니다. :)
내장 된 JSON 파서를 직접 사용하고 대안을 찾지 못했습니다.

편집 : 이제 얇은 주석 기반 래퍼를 사용하고 있습니다. 드로이드 파트.

다른 팁

대부분의 경우 빌드 인 JSON 파서를 사용하고 있지만 최근에는 적합하지 않은 시나리오에 들어 섰습니다. 일부 웹 서비스 요청의 경우 1MB 이상의 JSON 문서를받습니다. 빌드 인 JSON 파서로로드하려면 엄청난 양의 주요 메모리가 필요하므로 OutOfMemoryException 여러번. 이러한 시나리오의 경우 스트리밍 파서가 더 나은 선택이며 (사용이 더 불편하더라도) 내장 JSON 파서는 스트리밍이 아니라 DOM과 같은 스타일 만 제공합니다.

Android 용 스트리밍 JSON 파서를 찾는 사람은 누구나 사용하는 것이 좋습니다. 구글의 GSON. 처음에는 Jackson Json을 시도했는데 앱의 릴리스 버전을 만들려고 할 때까지 잘 작동했습니다. Proguard NullPointerException 잭슨의 생성자에서 ObjectMapper (디버그 버전에서는 모든 것이 잘 작동했지만). 몇 시간 동안 주위를 시도한 후에도 나는 이것을 고칠 수 없었습니다. 그런 다음 GSON으로 전환 한 다음 모든 것이 매력처럼 작동했습니다.

BTW : GSON 스트리밍 전용 JAR의 크기는 14KB입니다. 따라서 실제로 걱정할 필요는 없습니다.

질문이 충분히 좋은지 의문이라고 생각합니다. 그렇다면 의존성을 최소화하는 것이 종종 좋은 전략입니다. 충분히 효율성과 사용 편의성을 참조 할 수 있습니다.

가치가있는 것에 대해 Jackson은 또한 괜찮은 트리 모델과 전체 데이터 바인딩을 가지고 있습니다. 트리 모델은 기본 파서보다 상당히 빠릅니다 (구문 분석은 J2SE에서 3x-5x 더 빠릅니다. 아마도 Android와 같은 다른 플랫폼에서도 트리 모델 자체가 더 효율적일 것입니다). 또는 : 두 번째 JAR (트리 모델 및 데이터 바인딩에 Mapper가 필요함)에 대한 의존성을 원하지 않는 경우, 사용 사례를 다루기 위해 자신의 트리를 작성하는 것도 간단합니다. 기본 해시 맵/어레이리스트/랩퍼를 사용하거나 원하는 경우 자신의 클래스를 사용하십시오. 빌더는 아마도 40 줄의 코드 상단 일 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top