So sánh Trình phân tích cú pháp JSON cho Objective-C (Khung JSON, YAJL, TouchJSON, v.v.)


142

Theo như tôi biết, có ba Trình phân tích cú pháp JSON cho Objective-C, JSON Framework , YAJLTouch JSON . Sau đó, ba người này sẽ có những đặc điểm riêng.

Ví dụ:
YAJL có thể được sử dụng làm trình phân tích cú pháp kiểu SAX.
JSON Framework có lịch sử tương đối dài và được sử dụng rộng rãi.
Chạm vào JSON phân tích cú pháp NSData thay vì NSString.

Ngoài ra, theo như tôi đã thử nghiệm, kết quả so sánh hiệu suất như sau:
[nhanh] YAJL> Khung JSON> Chạm JSON [chậm].

Nếu bạn biết ưu và nhược điểm của các trình phân tích cú pháp JSON này, bạn có thể cho tôi biết không?
Cuối cùng, nếu bạn biết bất kỳ Trình phân tích cú pháp JSON nào khác, vui lòng cho tôi biết.


1
Tôi bỏ phiếu! Đâ là một câu hỏi tuyệt vời. Rất thích một số chuyên gia trả lời này. Tôi đã và đang sử dụng JSON Framework, nhưng ya, tôi rất muốn biết những ưu và nhược điểm của các trình phân tích cú pháp khác.
Chintan Patel

Cảm ơn Chintan. Tôi cũng đang sử dụng JSON Framework và không có khiếu nại. Nhưng, tôi hy vọng ai đó có thể cho chúng ta một câu trả lời tốt.
mai

5
Điều gì về một trình phân tích cú pháp JSON trực tuyến cho Obj-C? Tôi muốn có một trình phân tích cú pháp sẽ thông báo cho đại biểu khi một đối tượng mới được phân tích cú pháp, ví dụ: khi bạn đang tải xuống một JSON lớn từ máy chủ, bạn có thể bắt đầu xử lý phần đã nhận được. Nó cũng có thể làm giảm dấu chân bộ nhớ.
Martijn Thé

YAJL sẽ chính xác những gì bạn muốn. rel.me/2009/06/15/yajl-json-parser-objective-c-bindings
tomute

1
Một đánh giá toàn diện .
ohho

Câu trả lời:


59

Nếu bạn đang tìm kiếm tốc độ, hãy xem JSONKit . Nó (thường) nhanh hơn nhiều so với các thư viện JSON đã được đề cập, thường là một thứ tự cường độ nhanh hơn. Và do "bộ đệm đối tượng được khởi tạo gần đây", nên nó (thường là một lần nữa) sẽ sử dụng ít bộ nhớ hơn.


2
Tôi có thể xác nhận điều này :) Trong các thử nghiệm của mình, JSONKit nhanh hơn gần gấp đôi so với YAJL và nhanh hơn 50% so với JSON Framework, nhưng rõ ràng dữ liệu tôi sử dụng cho thử nghiệm là một trường hợp xấu nhất đối với JSONKit.
Kuba Suder

2
Thứ hai đó. Hãy nhớ đặt cờ NS_BLOCK_ASSERTIONS trong các bản dựng Phát hành của bạn. Nó thậm chí còn cải thiện tốc độ.
DenTheMan

1
AFAICT JSONKit không hỗ trợ phân tích cú pháp dựa trên luồng, vì vậy nếu đó là vấn đề bạn có thể muốn thực hiện với json-framework hoặc YAJL.
Frank Schmitt

JSONKit cho hiệu suất. Giới thiệu: một đánh giá toàn diện bởi cocoanetic.com.
ohho

2
Ngay lúc này, có vẻ như JSONKit đã bị tác giả bỏ rơi. Có một số vấn đề với phiên bản XCode mới nhất, nhiều yêu cầu kéo để sửa lỗi và không có vấn đề nào được chấp nhận.
Luke The Obscure

12

Xem xét một so sánh mà tôi đã làm , thư viện nhanh nhất là JSONKit, tiếp theo là NSJSONSerialization (bây giờ là API công khai) và NextiveJSON. SBJSON và TouchJSON chậm hơn một chút so với 3 thư viện trước đó.

Việc so sánh đã được thực hiện bằng iPhone 4S với iOS 5.0.1.


1
Bỏ phiếu để đề cập rằng NSJSONSerialization là một phần của API công khai! Tôi sẽ kiên trì với điều này, vì sẽ không có bất kỳ rắc rối nào với việc bảo trì.
Julian

như trên. NSJSONSerialization , đối với tôi, là cách hợp lý để đi - ít nhất là để nhắm mục tiêu iOS 5.0 trở lên.
Quintin Willison

Liên kết trong câu trả lời bị hỏng. Vui lòng sửa nó
Ossir

5

Ngoài ra còn có trình phân tích cú pháp này :

Tôi không nhớ tôi đã vấp phải cái này như thế nào, nhưng nó trông nhẹ và đơn giản, vì vậy tôi nghĩ rằng nó phù hợp với nhu cầu của tôi. Tôi đã chia rẽ nó để thêm khởi tạo từ NSData. Khi tôi cần phân tích các câu trả lời nhỏ, tôi không quan tâm đến hiệu suất. Nó sẽ rất thú vị để biết làm thế nào nó thực hiện mặc dù.


Đây là trình phân tích cú pháp JSON đơn giản và nhẹ nhất mà tôi đã sử dụng cho đến nay, rất được khuyến khích.
Kelvin

Wow, làm cho ngày của tôi. Thật là một trình phân tích cú pháp đơn giản và thanh lịch!
thandasoru

3

Tôi nghĩ JSONKit nhanh hơn YAJL và YAJL nhanh hơn Touch JSON và lớp NSJSONSerialization của lớp JSON5 nhanh hơn nhiều. NSJSONSerialization không cần sử dụng bất kỳ API bên thứ ba nào.




0

Tại sao không xem xét điểm chuẩn của akosma trên các trình phân tích cú pháp trong đó ông so sánh các loại trình phân tích cú pháp khác nhau. Nếu thiếu một trình phân tích cú pháp, bạn cũng có thể thêm nó vào các bài kiểm tra, vì mã của nó là nguồn mở.

iPhoneWebServiceClient

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.