Trang chủ > Uncategorized > Jackson hay Google Gson

Jackson hay Google Gson

Cả JacksonGoogle Gson đều là hai thư viện rất tốt để thao tác với JSON trên Java (xem thêm một so sánh hơi cũ), và nói chung không tốn công sức lắm bạn có thể đạt được mục đích tương tự nhau với cả Jackson và Gson. Tuy nhiên, có một số điểm khác biệt mà bạn cần cân nhắc khi lựa chọn Jackson hay Gson.

Thứ nhất, Jackson có hai kiểu serialize Date khác nhau là kiểu chuỗi (như “yyyy-MM-dd”) và kiểu epoch timestamp (số mili giây tính từ ngày 01/01/1970, UTC). Gson mặc định chỉ hỗ trợ kiểu chuỗi, nếu bạn cần kiểu khác phải tự viết Serializer và Deserializer. Không nói đến performance, với kiểu chuỗi, bạn phải đảm bảo định dạng của bạn có thông tin về múi giờ, gửi dữ liệu có kích thước lớn hơn, và phải code một cách rất cẩn thận nếu muốn thay đổi định dạng ngày giờ trong tương lai. Hơn nữa, epoch timestamp luôn là cách serialize đầu tiên được hỗ trợ trong các API liên quan đến ngày giờ.

Thứ hai, Spring MVC hỗ trợ Jackson với JSON viewmessage converter. Bạn có thể tự implement view và message converter dùng Gson, nhưng việc configuration, register, v.v sẽ khá phiền toái. (Bản thân việc Spring hỗ trợ Jackson cũng đã là một sự đảm bảo.)

Thứ ba, Jackson chỉ serialize các field có getter/setter hoặc annotation, còn Gson mặc định serialize tất cả các field. Trong trường hợp bạn không thể tiếp cận với mã nguồn của một class để thêm getter/setter hoặc annotation, với Jackson bạn phải dùng mix-in annotation, còn Gson sẽ giúp bạn đạt được mục đích một cách nhanh chóng (đây cũng là một mục tiêu thiết kế của Gson). Tất nhiên, việc thao tác trực tiếp hay gián tiếp với các field hoàn toàn private của một class có vẻ là một điều gì đó không ổn.

Sau cùng, trong các tình huống sử dụng mặc định, Jackson vẫn có performance tốt hơn Gson (xem benchmark , mới). Vài chục hay vài trăm mili giây trong nhiều trường hợp không phải là điều gì quá quan trọng. Nhưng dù sao thì a penny saved is a penny earned, nhanh tí nào hay tí ấy (và bạn phải tự benchmark cho tình huống sử dụng của bạn).

Tags: ,
  1. Chưa có phản hồi.
  1. Tháng Một 14, 2014 lúc 8:02 sáng

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: