Objective-C 용 JSON 구문 분석기 (JSON 프레임 워크, YAJL, TouchJSON 등) 비교


142

내가 아는 한 Objective-C, JSON Framework , YAJLTouch JSON 용 JSON 파서가 세 개 있습니다. 그러면이 세 가지는 고유 한 특성을 갖습니다.

예를 들면 다음과 같습니다.
YAJL을 SAX 스타일 파서로 사용할 수 있습니다.
JSON 프레임 워크는 비교적 오랜 역사를 가지고 있으며 널리 사용됩니다.
Touch JSON은 NSString 대신 NSData를 구문 분석합니다.

또한 테스트 한 결과 성능 비교 결과는 다음과 같습니다.
[fast] YAJL> JSON Framework> Touch JSON [slow].

이 JSON 파서의 장단점을 알고 있다면 알려주시겠습니까?
마지막으로 다른 JSON 파서를 알고 있다면 알려주십시오.


1
내 투표! 이것은 좋은 질문입니다. 일부 전문가 가이 답변에 관심이 있으십니까 나는 JSON Framework를 모두 사용했지만 나중에 다른 파서의 장단점을 알고 싶어합니다.
Chintan Patel

친탄 감사합니다. 또한 JSON 프레임 워크를 사용하고 있으며 불만이 없습니다. 그러나 누군가 우리에게 좋은 대답을 줄 수 있기를 바랍니다.
16:15에

5
Obj-C 용 스트리밍 JSON 파서는 어떻습니까? 서버에서 큰 JSON을 다운로드 할 때와 같이 새 객체를 구문 분석 할 때 델리게이트에게 알리는 파서를 갖고 싶습니다.받은 부분을 처리하기 시작할 수 있습니다. 또한 메모리 사용량을 줄일 수 있습니다.
Martijn Thé

YAJL은 정확히 당신이 원하는 것입니다. rel.me/2009/06/15/yajl-json-parser-objective-c-bindings
tomute to

1
종합적인 검토 .
ohho

답변:


59

속도를 찾고 있다면 JSONKit을 살펴 보십시오 . 일반적으로 이미 언급 한 JSON 라이브러리보다 훨씬 빠르며, 종종 훨씬 빠릅니다. 그리고 "최근에 인스턴스화 된 객체 캐시"이기 때문에 (대개) 메모리도 적게 사용합니다.


2
나는 이것을 확인할 수있다 :) 내 테스트에서 JSONKit은 YAJL보다 거의 두 배 빠르며 JSON 프레임 워크보다 50 % 빠르지 만 테스트에 사용한 데이터는 JSONKit의 최악의 시나리오 일 것입니다.
Kuba Suder

2
두 번째입니다. 릴리스 빌드에서 NS_BLOCK_ASSERTIONS 플래그를 설정해야합니다. 속도를 더욱 향상시킵니다.
DenTheMan

1
AFAICT JSONKit은 스트림 기반 구문 분석을 지원하지 않으므로 문제가 발생하면 json-framework 또는 YAJL을 사용하십시오.
Frank Schmitt

성능을위한 JSONKit. Referece : cocoanetics.com의 종합적인 검토 .
ohho

2
현재 JSONKit이 저자에 의해 포기 된 것처럼 보입니다. 최신 버전의 XCode에는 여러 가지 문제가 있으며이를 해결하기위한 수많은 풀 요청이 있으며 그 중 어느 것도 받아 들여지지 않았습니다.
누가 모호한 누가

12

내가 한 비교를 고려할 때 가장 빠른 라이브러리는 JSONKit이며 NSJSONSerialization (현재 공개 API)과 NextiveJSON이 뒤 따릅니다. SBJSON 및 TouchJSON은 이전 3 개의 라이브러리보다 약간 느립니다.

iOS 5.0.1이 설치된 iPhone 4S를 사용하여 비교했습니다.


1
NSJSONSerialization이 공개 API의 일부라는 언급에 찬성 투표하십시오! 유지 보수에 아무런 문제가 없기 때문에 이것을 고수 할 것입니다.
Johannes

같게. NSJSONSerialization 은 적어도 iOS 5.0 이상을 대상으로하는 현명한 방법입니다.
Quintin Willison

답변의 링크가 끊어졌습니다. 수정하십시오
Ossir

5

도 있는데 이 파서는 :

나는 이것을 어떻게 우연히 만났는지 기억하지 못하지만 가볍고 단순 해 보였으므로 그것이 내 요구에 적합하다고 생각했습니다. NSData에서 초기화를 추가하기 위해 이벤트를 포크했습니다. 작은 응답을 구문 분석해야 했으므로 성능에 신경 쓰지 않았습니다. 어떻게 작동하는지 아는 것은 흥미로울 것입니다.


이것은 지금까지 사용한 가장 가볍고 간단한 JSON 파서입니다.
Kelvin

와우, 내 하루를 만들었습니다. 그런 간단하고 우아한 파서!
thandasoru

3

JSONKit은 YAJL보다 빠르며 YAJL은 Touch JSON보다 빠르며 IOS5 클래스 NSJSONSerialization 클래스는 훨씬 빠릅니다. NSJSONSerialization 은 타사 API를 사용할 필요가 없습니다.




0

다른 종류의 파서를 비교하는 파서에 대한 akosma의 벤치 마크를 살펴보십시오. 하나의 구문 분석기가 누락 된 경우 코드가 공개 소스이므로 테스트에 추가 할 수도 있습니다.

iPhoneWebServicesClient

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.