2011-04-05 4 views
3

Android에서 거대한 JSON 파일을 구문 분석하는 방법은 무엇입니까?Android에서 거대한 JSON 객체를 파싱 하시겠습니까?

내가 로그에 이런 일에 같은 파일을 참조 구문 분석 :

04-05 15:55:46.490: DEBUG/dalvikvm(3847): GC freed 12159 objects/557744 bytes in 142ms 
04-05 15:55:46.490: INFO/global(3847): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required. 
04-05 15:55:46.650: DEBUG/dalvikvm(3847): GC freed 56 objects/100176 bytes in 115ms 
04-05 15:55:46.660: INFO/dalvikvm-heap(3847): Grow heap (frag case) to 4.207MB for 110626-byte allocation 
04-05 15:55:46.760: DEBUG/dalvikvm(3847): GC freed 0 objects/0 bytes in 104ms 
04-05 15:55:46.890: DEBUG/dalvikvm(3847): GC freed 3 objects/73856 bytes in 115ms 
04-05 15:55:47.050: DEBUG/dalvikvm(3847): GC freed 7 objects/110872 bytes in 113ms 
04-05 15:55:47.050: INFO/dalvikvm-heap(3847): Grow heap (frag case) to 4.426MB for 248896-byte allocation 
04-05 15:55:47.150: DEBUG/dalvikvm(3847): GC freed 0 objects/0 bytes in 104ms 
04-05 15:55:47.310: DEBUG/dalvikvm(3847): GC freed 8 objects/166232 bytes in 106ms 
04-05 15:55:47.310: INFO/dalvikvm-heap(3847): Grow heap (frag case) to 4.624MB for 373340-byte allocation 
04-05 15:55:47.420: DEBUG/dalvikvm(3847): GC freed 0 objects/0 bytes in 106ms 
04-05 15:55:47.580: DEBUG/dalvikvm(3847): GC freed 10 objects/249288 bytes in 111ms 
04-05 15:55:47.590: INFO/dalvikvm-heap(3847): Grow heap (frag case) to 4.920MB for 560006-byte allocation 
04-05 15:55:47.690: DEBUG/dalvikvm(3847): GC freed 0 objects/0 bytes in 98ms 
04-05 15:55:47.810: DEBUG/dalvikvm(3847): GC freed 12 objects/373792 bytes in 88ms 
04-05 15:55:47.910: DEBUG/dalvikvm(3847): GC freed 4 objects/560088 bytes in 87ms 
04-05 15:55:48.010: DEBUG/dalvikvm(3847): GC freed 5 objects/128 bytes in 88ms 
04-05 15:55:48.010: INFO/dalvikvm-heap(3847): Grow heap (frag case) to 5.350MB for 461302-byte allocation 
04-05 15:55:48.130: DEBUG/dalvikvm(3847): GC freed 0 objects/0 bytes in 120ms 
04-05 15:55:48.990: DEBUG/dalvikvm(3847): GC freed 10419 objects/1383992 bytes in 109ms 
04-05 15:55:49.720: DEBUG/dalvikvm(3847): GC freed 8769 objects/384360 bytes in 115ms 
04-05 15:55:50.550: DEBUG/dalvikvm(3847): GC freed 10472 objects/454880 bytes in 129ms 
04-05 15:55:51.590: DEBUG/dalvikvm(3847): GC freed 12663 objects/554440 bytes in 147ms 

는 JSON 파일에 대한 풀 파서가 있습니까? 그런 일을 어떻게 처리할까요?

+2

대단한 파일, Android (모바일을 의미). 왜 이것을해야하는지 다시 생각한 다음 * 모바일 장치에서 많은 작업을하지 않아도됩니다. –

+1

XML 파일 용 풀 파서가 있으므로 거대한 JSON 파일이 문제가되어서는 안됩니다. – pixel

+1

너무 평상시에'INFO/global (3847) : BufferedReader 생성자에서 사용되는 기본 버퍼 크기. 만약 8k-char 버퍼가 필요하다면 명시하는 것이 낫다. "메시지 –

답변

7

Jackson JSON 파서를 살펴보십시오. 안드로이드보다 빠르며 GSON보다 빠르며 스트리밍을 지원합니다.

http://jackson.codehaus.org/

나는 당신의 JSON은 거대하고 그 이외의 최적 설계를 제안 않는 다른 사람에 의해 만들어진 점을 유지 그러나 않습니다. 예 : 연결이 불안정하고 몇 번 실패하면 모바일 데이터 요금제에서 추가 데이터 비용이 발생할 수 있습니다. 가능한 경우 고장을 없애는 것이 항상 바람직합니다. 고장은 다시 전체 요청을 요구하는 것을 포함하지 않습니다.

+1

gson은 과거에 나에게 느렸다. 잭슨에게 기회를 줘야 해. –

3

모든 것을 즉시 파싱하지 않고 json 객체를 스트리밍하는 인터페이스를 찾고 있다면 JsonStreamParsergson으로 볼 수 있습니다.

관련 문제