JSON viết tắt của JavaScript Object Notation , là một kiểu dữ liệu lưu trữ thông tin một cách có tổ chức, dễ truy cập. Nói tóm lại, nó cung cấp cho chúng ta một bộ sưu tập dữ liệu có thể đọc được theo ngữ nghĩa của con người, là dạng dữ liệu phổ biết dùng để truyền dữ liệu giữa các máy chủ và ứng dụng client như Web, mobile app. Json trong Android được đa số các lập trình viên phát triển ứng dụng mobile chọn là phương thức chính dùng để truy cập nội dung trên máy chủ dữ liệu.

Một ví dụ đơn giản về thông tin được lưu trữ trong JSON

var jason = {
	"age" : "24",
	"hometown" : "Missoula, MT",
	"gender" : "male"
};

Hiện tại có rất nhiều thư viện java giúp chúng ta quản lý kiểu dữ liệu này, một số thư viện có lẽ bạn đã từng nghe nói qua như: JSON.simple, GSON, Jackson, JSONP … vậy đâu là điểm khác biệt giữa chúng, chọn lựa thư viện nào để xử dụng cho ứng dụng sắp phát triển của mình? Với ý nghĩ đó, chúng tôi đã chạy thử nghiệm test lab để so sánh tốc độ bốn thư viện JSON phổ biến nhất cho Java với các mẫu thử dữ liệu JSON khác nhau. Hôm nay, chúng tôi chia sẻ những kết quả đó với bạn.

Mẫu thử trên các tệp dữ liệu Big Data

JSON thường được chọn để truyền và phân tích dữ liệu lớn. Đây là một tình hướng cơ bản phổ biến trong các ứng dụng xử lý dữ liệu với máy chủ Hadoop, Spark. Với kích thước và quy mô của các tệp dữ liệu JSON này, bạn có thể khách quan đánh giá sự khác biệt trong việc đọc, phân tích giữa 4 thư viện trên.

Mẫu thử trên các tệp dữ liệu nhỏ

Các tệp dữ liệu nhỏ là đối tượng thử nghiệm thứ 2 trong bài test này, là cổng giao tiếp dữ liệu chính từ Web API, các tệp dữ liệu này cần được sự hỗ trợ đọc, phân tích và xử lý nhanh. Về mặc hiệu xuất thì cả 4 thư viện này không có điểm khác biệt nếu chỉ test ở mức độ bình thường. Do đó mẫu thử này được phân tích theo thời gian dài với số lượng các tệp tin cần xử lý nhiều.

Mỗi thư viên JSON trong danh sách kiểm thử này đều có cách xử lý và tiếp cận dữ liệu JSON riêng, hoàn toàn khác nhau do đó chon lựa đúng thư viện một cách đúng đắn cho môi tường phát triển là yêu cầu đúng đắn cần được các lập trình viên xem xét.

Thư viện xử lý JSON trong Java

JSON.simple vs GSON vs Jackson vs JSONP  đây là 4 thư viện chuẩn được đa số các lập trình viên lựa chon để xử lí JSON trong môi trường JAVA và được đa số các dự án trên GitHub tin cậy xử dụng.

  • Thư viện JSON.simple của Yidong Fanghttps://github.com/fangyidong/json-simple).  Đúng như tên gọi “simple” đây là một thư viện gọn nhẹ đơn giản để đọc và giải mã dữ liệu JSON trong java.
  • Google’s GSON: (https://github.com/google/gson)thư viện được viết bằng ngôn ngữ Java được google support tận răng, đây là thư viện mặc định, dễ dùng mạnh mẽ không cần phải đánh giấu dữ liệu trước khi map là thư viện bắt buộc phải biết và được dùng làm hướng dẫn học lập trình trên android.
  • FasterXML’s Jackson Project: (https://github.com/FasterXML/jackson) là thư viện  được thiết kế chuyên cho mục đích đọc các dữ liệu được stream từ mạng, chuyển đổi đọc dữ liệu không chỉ hỗ trợ cho JSON mà còn cho các kiểu dữ liệu khác như XML.
  • Oracle’s JSONP: (https://jsonp.java.net/). Thư viện chuyên nghiệp thao tác với dữ liệu JSON do chính công ty đỡ đầu của JAVA thiết kế và chia sẽ, được triển khai theo format JSR353.

 

Thử nghiệm:

Trong bài thử nghiệm này như đã nói trước đó chúng ta sẽ kiểm thử trên cả 2 loại dữ liệu, dữ liệu lớn và nhiều dữ liệu nhỏ. Do hiệu xuất cách sử lý khác nhau đối với dữ liệu đầu vào do đó các bài kiểm thử đều được chạy trên củng một môi trường phân tích không có sự khác nhau rõ rệt giữa các môi trường kiểm thử này.

Tập tin big Json (190MB) được lấy từ https://github.com/zeMirco/sf-city-lots-json  và dữ liệu ngẩu nhiên gồm các tệp nhỏ được tạo tại endpoint này: http://www.json-generator.com/ 

Tập tin Big Json được chạy 10 lần và lấy thông số trung bình trong tất các các lần chạy để cho ra chỉ số chính xác nhất. Mỗi tập tin Json nhỏ được chạy ngẫu nhiên 10.000 lần và không lưu trữ cache vào bộ nhớ mà đặt trên máy chủ AWS.

Sau đây là kết quả benkmark đối với tập tin Big Json

Benkmark tập tin big Json

Benkmark tập tin big Json

Theo bảng kết quả trung bình sau 10 lần chạy chúng ta dễ thấy 2 thư viện JACKSON và JSON.simple  thao tác đọc trên tập tin BIG JSON  là nhanh nhất, GSON của google đứng cuối bảng xếp hạng.

Chuyển đổi kết quả so sánh này sang dạng bảng % ta cũng nhận thấy rõ điều này

Benkmark tập tin big Json theo tỉ lệ %

Benkmark tập tin big Json theo tỉ lệ %

Kết Luận: Nên chọn lựa thư viện JACKSON, hoặc JSON.simple khi bạn muốn thao tác với kiểu dữ liệu JSON trong 1 tập tin lớn

Kết quả tập tin Small JSON:

Kết quả tập tin Small Json

Kết quả tập tin Small Json

Bảng trên cho thấy kêt quả trung bình của 10 lần chạy mỗi file tập tin json 1kb(mỗi lần này gồm 10k chạy) chi theo tỉ lệ ta có kết quả với điểm số:

  • GSON – 14
  • JSONP – 5
  • Jackson – 1
  • JSON.simple – 0

Nhìn vào bảng tổng kết cuối chúng cho ra kêt quả với GSON là thư viện nhanh nhất khi đọc tập tin nhỏ và JSON.simple và JSONP lần lượt đứng thứ hai và thứ ba.

Lấy GSON làm chuẩn mốc và chuyển kết quả sang tỉ lệ % ta thấy

Benkmark tập tin small Json theo tỉ lệ %

Benkmark tập tin small Json theo tỉ lệ %

Kết Luận: chọn thư viện GSON khi bạn muốn thao tác với tập tin JSON dung lượng nhỏ.

Kết luận, và hướng lựa chọn thư viện thao tác JSON chuẩn cho ứng dụng:

Phân tích tốc độ đọc, thao tác file JSON không phải là chuẩn chính để chọn lựa một thư viện đọc, ghi JSON cho ứng dụng bạn đang phát triển, nó còn nhiều vấn đề khác cần được đánh giá. Tuy nhiên, tốc độ thạo tác dữ liệu JSON là một yếu tố quan trọng cần được cân nhắc. Tất cả các thư viện JSON đều hoạt động tốt và đầy đủ chức năng, việc cân nhắc chính dựa vào điều kiện triển khai và hoạt động của ứng dụng.

  • Đối với các ứng dụng cần thao tác thường xuyên trên các dữ liệu tập tin JSON rất lớn thì thư viện JACKSON là ưu tiên hàng đầu, GSON hơi kém trong vấn để thao tác này.
  • Đối với các ứng dụng chỉ thao tác trên các dữ liệu JSON nhỏ, cần hiệu xuất đọc ghi cao, GSON là ưu tiên lựa chọn cho ứng dụng của bạn.
  • Nếu bạn phải thao tác với cả 2 loại tập tin, cần sự tiếp cận trung bình và đa năng thì JSON.simple  là ưng cử viên sáng giá cho bạn.

Tóm gọn: JACKSON cho file BIG JSON, GSON cho file SMALL JSON, và JSON.simple tốt cho cả 2

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.