2013-07-04 1 views
2

내 iPad 앱은 10MB JSON 파일을 구문 분석하고 콘텐츠를 핵심 데이터에 저장해야합니다. NSJSONSerialization 대 ​​스트림 기반 파서

당신은 큰 파일 크기 및 메모리 사용을 고려 NSJSONSerialization를 사용하는 것이 좋습니다겠습니까하거나 오히려 (이 경우 추천 할 것입니다 기초 스트림 분석기)를 스트림 기반 JSON 파서를 선택할 것인가? 그건 그렇고 : 다른 iOS 응용 프로그램에 의해 NSJSONSerialization 파일이 만들어졌습니다.

감사합니다.

+1

"스트림 기반"이라 함은 특정 데이터 비트를 "요청"하는 곳의 XML 파서와 비슷한 구문 분석기를 의미하며 "즉시"추출, 전체 파일 구문 분석 및 결과 데이터 반환 "청크", 그 유형의 JSON 파서가 거의 없습니다. 이것은 파싱 된 JSON의 내부 표현이 XML의 일반적인 내부 표현보다 훨씬 더 작기 때문에 대부분 그렇습니다. 따라서 한 번에 모두 구문 분석하는 것이 더 실용적입니다. (XML과 마찬가지로 JSON 객체의 항목 순서도 보장 할 수 없습니다.) –

답변

4

NSJSONSerializationJSONObjectWithStream:options:error:이므로이 두 가지를 모두 권하고 싶습니다.


대신 this JSON parsing framework을 사용할 수 있습니다.

+0

구문 분석 프로세스가 완료된 직후 구문 분석기에서 작성된 사전 구조는 10MB의 RAM을 할당하게됩니까? 그 결과 iOS 메모리 경고가 발생하지 않을까요? – AlexR

+0

그것은 그것이 무엇이며 형식이 어떻게 달라져 있습니다. 10MB의 JSON 텍스트가 반드시 메모리에있는 10MB의 데이터와 같지는 않습니다. 메모리가 클 경우 어느 시점에서든 전체를로드하고 싶지 않으므로 구문 분석을 원하지 않습니다. – Wain

+1

일반적으로 JSON 파일의 구문 분석 된 표현은 소스 파일보다 조금 더 (아마 3-5x) 크게됩니다. JSON에는 "설탕"이 거의없고 JSON의 모든 문자열을 파서 출력에 나타내야합니다. 문자열은 2 바이트 또는 4 바이트 표현으로 확장되며 객체 오버 헤드와 언어의 배열 및 사전을 관리하는 오버 헤드가 있습니다. –