2011-11-14 47 views

Trả lời

34

GSON có thể sử dụng định nghĩa đối tượng để trực tiếp tạo đối tượng thuộc loại mong muốn. JSONObject cần được phân tích cú pháp theo cách thủ công. Đó là sự khác biệt chính.

4

như những người khác nói, GSON nên lập bản đồ JSON-POJO dễ dàng hơn nhiều, NHƯNG, phiên bản mới nhất GSON (như tôi viết, 2.2.2) có vấn đề nghiêm trọng với các API mới nhất của Android 17 (Android 4.2).

Kiểm tra này cung cấp thông tin: http://code.google.com/p/google-gson/issues/detail?id=496

Nếu bạn đang làm một dự án mới bây giờ, và muốn nó được tương thích với Android 4.2, hoặc sử dụng một cũ GSON (1.7.1 hoạt động tốt với Android 4.2, nhưng là chậm hơn) hoặc tìm giải pháp khác.

1

Tim nào cũng được nói chính xác,

Gson là API tốt nhất để phân tích cú pháp JSON trên Android. Nó có kích thước nhị phân rất nhỏ (dưới 200 KiB), thực hiện dữ liệu nhanh và có một API đơn giản dễ sử dụng . Thư viện JSON tích hợp của Android cũng tốt. Bạn nên sử dụng chúng nếu bạn không làm nhiều JSON và không cần dữ liệu.

0

Có hai API JSON trên Android:

org.json là một API kiểu cây đơn giản. Điểm yếu lớn nhất là nó yêu cầu bạn tải toàn bộ tài liệu JSON vào chuỗi trước khi bạn có thể phân tích cú pháp. Đối với các tài liệu JSON lớn, điều này có thể không hiệu quả. http://developer.android.com/reference/org/json/package-summary.html

android.util.JsonReader/JsonWriter là API phát ở mức độ thấp. Chúng hiệu quả nhưng không làm dữ liệu, vì vậy bạn cần viết một số mã bản mẫu để sử dụng chúng. Chúng chỉ khả dụng trong Android 3+. Đối với các phiên bản trước của Android, cùng một API có sẵn độc lập trong gói luồng của Gson. http://developer.android.com/reference/android/util/JsonReader.html

JsonReader và JsonWriter của Gson được lấy từ JsonReader và JsonWriter của Android. Tôi theo nghĩa đen đã sao chép và dán chúng từ Android vào Gson một ngày và cố gắng giữ chúng đồng bộ hóa khi tôi tối ưu hóa một hoặc khác.

+3

Đến nay điểm yếu lớn nhất của việc triển khai thực hiện 'org.json' là' JSONException'. Chỉ cần _không thuận tiện_ phải đặt một khối 'try/catch' xung quanh tất cả các công cụ JSON của bạn. – aroth

+0

Cảm ơn @aroth vì đã thêm nhận xét có giá trị. – Mubarak

Các vấn đề liên quan