2013-09-04 2 views
0

NSXMLParser & JSON 파서의 장단점은 무엇입니까?NSXMLParser 대 JSON 파서

어떤 시나리오가 좋은가요?

현재 내 앱은 NSXMLParser를 사용합니다. 더 효율적이라면 JSON 파서를 옮길 계획입니다.

감사

+0

더 중요한 질문은 데이터 형식이 귀하의 유스 케이스에 가장 적합한 것이라고 생각합니까? –

답변

1

NSXMLParser은 기본적으로 XML 문서의 특정 요소의 발생에 대한 통지 대리인 파서에 "이벤트 구동"이다.

이벤트 기반 파서는 자체적으로 XML 문서의 표현을 만들지 않습니다. 요소의 실제 처리는 일부 대리인이 수행해야합니다. 이벤트 구동 파서를 적절히 활용하는 것은 정교하고 오류가 발생하기 쉽고 이러한 작업에 어떻게 접근해야하는지 경험이 필요합니다. 음, 너도 알 잖아.

NSJSONSerialization 다른 모든 타사 JSON 파서는 JSON 입력에서 기초 객체 (NSArray 또는 NSDictionary)를 만듭니다. JSON 문서를 구문 분석하고 NSDictionary 또는 NSArray 오브젝트를 다시 가져 오는 것은 하나의 명령문의 문제입니다. 일부는 "이벤트 구동"모드도 지원합니다.

XML은 JSON보다 훨씬 복잡합니다. 본질적으로 JSON 구문 분석기는 문서를 구문 분석 할 때 훨씬 간단하고 거의 항상 효율적입니다.

단순함에도 불구하고 JSON은 거의 항상 데이터를 표현하기에 충분합니다.

따라서 JSON으로 데이터를 표현할 수있는 경우에는 언제든지 JSON을 사용하십시오. 가능한 경우 NSJSONSerialization을 사용하십시오.

다른 제 3 자 JSON 파서는 이벤트 기반 API, 데이터 청크 처리 방법 개선, 유니 코드 NULL 문자 처리, 유니 코드 비 문자 처리 등과 같은 특정 가장자리의 경우를 사용자 정의하는 더 정교한 옵션을 제공합니다. JSON 번호 등을 변환하는 방법은 일 수 있으며 일 수도 있고 NSJSONSerialization 일 수 있습니다.

오늘 NSJSONSerialization은 JSONKit만큼 빠릅니다. (일부 입력의 경우 JSONKit이 약간 빠름). AFAIK, 어떤 입력에 대해서도 거의 항상 NSJSONSerialization보다 빠른 두 개의 타사 파서가 있습니다 (특히 팔에서는). 그리고 Numbers를 변환 할 때는 언제나 그렇습니다. 1에서 2의 범위에서 더 빠르다는 것을 기대할 수 있습니다. 그러나 JSON을 파싱하는 것은 성능 문제에 대한 거의 절대적인 문제가 아닙니다.