ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN VNU UNIVERSITY OF SCIENCE BÁO CÁO TÌM HIỂU JSON Học phần Cơ sở dữ liệu web và hệ thống thông tin Sinh viên thực hiện Nhóm 1 + Lã Đức Nam – 2000[.]
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN VNU UNIVERSITY OF SCIENCE BÁO CÁO TÌM HIỂU JSON Học phần: Cơ sở liệu web hệ thống thơng tin Sinh viên thực hiện: Nhóm + Lã Đức Nam – 20002077 + Dương Văn Nam – 20002076 + Phạm Hồng Nghĩa – 20002080 Khoa: Toán-Cơ-Tin học Ngành: Khoa học liệu Lời nói đầu Đi với đời máy tính, sản phẩm ứng dụng công nghệ hiệu vào sản phẩm giúp cho sống trở nên tiện lợi dễ dàng Bên cạnh phát triển máy tính hệ thống thơng tin, kích thước liệu tăng lên tác vụ yêu cầu ngày phức tạp cần xử lý tốt lên, ta muốn nói đến kích thước sở liệu web Khi triển khai website cần có nơi lưu trữ liệu hệ quản trị sở liệu (MYSQL, SQL server, … ), điều vấn đề với sở liệu có kích thước nhỏ, người dùng việc triển khai trực tiếp thiết bị người dùng hồn tồn khả thi nhiên khơng phù hợp với sở liệu lớn - điều mà ngày trở nên phổ biến nay, khó đáp ứng cho số lượng người dùng lớn với nhu cầu sử dụng định, không phù hợp yêu cầu người dùng cần cài đặt nhiều công cụ hỗ trợ hệ sở liệu Giải pháp cũ sử dụng dạng file liệu sql rút gọn hay tệp xml để lưu trữ liệu, việc giúp giải vấn đề cho yêu cầu tác vụ nhỏ gọn nhiên hai định dạng liệu chưa thực giải triệt để vấn đề tinh gọn, giảm tải cài đặt không cần thiết cho người dùng chưa dễ dàng trực quan nội dung liệu với người dùng Chính từ việc JSON đời tạo nên chuẩn lưu trữ liệu nhẹ hơn, dễ dàng sử dụng trực quan hơn, sau nhóm em báo cáo phần tìm hiểu JSON nhóm Mục lục Lời nói đầu Mục lục CHƯƠNG 1: JSON LÀ GÌ? 1.1 Định nghĩa 1.2 Cấu trúc JSON 1.3 Định dạng liệu JSON 1.3.1 Object (đối tượng) 1.3.2 Array (mảng - danh sách) 1.3.3 Value (giá trị) 1.3.4 String (chuỗi) 10 1.3.5 Number (kiểu số) 11 1.4 Lược đồ JSON Chương 2: Trích xuất liệu từ JSON 11 13 2.1 Trích xuất liệu 13 2.2 Một số mơ hình xử lý liệu khác 16 CHƯƠNG 1: JSON LÀ GÌ? 1.1 Định nghĩa JSON kí tự viết tắt Javascript Object Notation - dạng liệu đối tượng (ký pháp đối tượng) Javascript - JSON định dạng hoán vị liệu nhanh, JSON dạng văn - liệu tuân theo cú pháp chuẩn mô tả lại liệu đối tượng Javascript (cơ sở dựa ngơn ngữ lập trình JavaScripts) Định dạng JSON (định dạng văn bản, hoàn toàn độc lập với ngơn ngữ lập trình) thân thiện với người dùng ngơn ngữ lập trình mà hỗ trợ hầu hết ngôn ngữ lập trình đọc trực tiếp hàm, cho phép việc lưu trữ trao đổi liệu tảng ứng dụng nhỏ gọn trở nên dễ dàng hơn, chưa kể đến việc định dạng JSON thân thiện với người dùng mà đọc hiểu nội dung liệu mà file JSON lưu trữ, thể Với ưu tính nhỏ, nhẹ trực quan vậy, JSON sử dụng để lưu trữ liệu, lưu ghi sở liệu cách dễ dàng định dạng file json JSON có định dạng đơn giản, dễ sử dụng XML nhiều nên tính ứng dụng JSON cao sử dụng phổ biến công việc trao nhận liệu website hay xây dựng ứng dụng nhỏ gọn, sau vào tìm hiểu cụ thể JSON qua cú pháp ví dụ minh hoạ VD: JSON lưu thơng tin người dùng sau (minh hoạ bản): Bằng quan sát ta thấy cú pháp JSON đơn giản, đơn đoạn văn chứa thông tin với định dạng liệu gồm hai phần key value bắt cặp tương ứng ngăn cách dấu : (dấu hai chấm), điều tương ứng sở liệu tên field giá trị với ghi tương ứng Cụ thể, cấu trúc JSON có yêu cầu sau: ● Chuỗi JSON nằm cặp dấu ngoặc nhọn ● Các giá trị key, value chuỗi JSON nằm cặp dấu nháy kép (“), trừ value giá trị số, lưu ý đặt giá trị key, value bên cặp dấu nháy đơn (‘) cú pháp cú pháp chuẩn JSON Trường hợp giá trị value có chứa dấu nháy kép ta dùng thêm dấu \ (dấu sổ chéo) trước dấu nháy kép value để tạo thành \” phân biệt với dấu nháy kép cú pháp JSON, thí dụ: ● Trong chuỗi JSON chứa nhiều cặp (bộ) key : value, sử dụng dấu , (dấu phẩy) để ngăn cách key : value với Ở sau key : value cuối không sử dụng dấu phẩy ● Key dùng có quy ước đặt tên: ○ Dùng chữ không dấu số ○ Không sử dụng ký tự cách (ký tự trắng) thay vào sử dụng dấu gạch chân (_) ○ Ký tự khơng phải ký tự số Bằng việc tìm hiểu thông tin sơ json cảm quan cá nhân nhìn vào thí dụ, hiểu JSON gì? Tại dễ nhìn trực quan hơn? nhỏ gọn tới đâu mà ứng dụng ngày phổ biến Để tiếp nối báo cáo tìm hiểu JSON, nhóm em tiếp tục trình bày nội dung cụ thể cấu trúc JSON 1.2 Cấu trúc JSON Trong mục 1.1 định nghĩa trình bày cú pháp đơn giản JSON bao gồm kiểu cách định dạng key - value theo cặp, chứa dấu nháy kép, phân định dấu hai chấm, … Bằng cú pháp đơn giản JSON thể hiện, miêu tả lại liệu đơn giản đối tượng thành văn với định dạng JSON, nhiên yêu cầu thực tế cần có đáp ứng tốt hơn, lưu trữ không nhẹ, trực quan dễ dùng mà cần phải đáp ứng tiêu chí khối lượng liệu truyền tải, lưu trữ, … Vậy cấu trúc JSON giải vấn đề xem xét thí dụ sau làm rõ cấu trúc chuỗi JSON Thí dụ: Cần xây dựng chuỗi JSON chứa thơng tin thành viên nhóm em: Lã Đức Nam - MSV: 20002077, Phạm Hồng Nghĩa - MSV:20002080, Dương Văn Nam - MSV: 20002076 Nếu dùng cú pháp phần thu chuỗi JSON sau: Quan sát ta nhận thấy không ổn sử dụng cú pháp để lưu trữ thông tin sinh viên chuỗi JSON vì: + Các tên thuộc tính khơng quán + Nếu số lượng sinh viên cần lưu trữ lớn việc đọc liệu phức tạp tất thông tin sinh viên lưu trữ dạng thuộc tính đối tượng nhất, phát sinh vấn đề xếp liệu + Về phía cảm nhận nhìn cá nhân thấy liệu lưu trữ trực quan tên thuộc tính khơng cịn nguyên (cố định mang nghĩa nhất) key name có lưu value tên sinh viên khơng cần thiết phải gánh thêm nội dung số thứ tự số có ý nghĩa gì, key nên key thơi Vì cần dùng cấu trúc phù hợp để lưu trữ liệu dạng danh sách vậy, quan sát cấu trúc danh sách với định dạng JSON: Ngay nhìn mắt thường ta dễ dàng quan sát nhận biết chuỗi JSON thể danh sách, lưu trữ thông tin đối tượng với đối tượng có hai thuộc tính “name” “msv”, liệu có cấu trúc rõ ràng gọn gàng Về cấu trúc mảng thể dạng chuỗi JSON có đặc điểm sau: + Dùng cặp ngoặc vuông ([]) bao + Bên liệu phần tử mảng viết dạng chuỗi JSON tương ứng ngăn cách dấu phẩy Ngồi cịn số điểm cấu trúc chuỗi JSON: ● Các kiểu liệu biểu diễn dạng chuỗi JSON bao gồm: Đối tượng, mảng danh sách, kiểu chuỗi, kiểu số, kiểu boolean null ● Cấu trúc chuỗi JSON theo chuẩn, phân lớp rõ ràng trực quan Sau tới phần báo cáo, tìm hiểu định dạng liệu JSON 1.3 Định dạng liệu JSON 1.3.1 Object (đối tượng) Định dạng liệu đối tượng JSON: Định dạng liệu đối tượng JSON chuỗi văn bản: ● Chứa liệu cặp ngoặc nhọn ● Trong cặp ngoặc nhọn chứa tập hợp cặp key-value cách dấu hai chấm (:) ● Các cặp key-value ngăn cách với dấu phẩy (,) Thí dụ minh hoạ: Thí dụ định dạng chuỗi JSON lưu thông tin đối tượng: ● Key = mã sinh viên : Value = đối tượng điểm thành phần môn học ● Đối tượng điểm thành phần mơn học có thuộc tính bao gồm điểm thường xuyên, điểm kỳ điểm cuối kỳ lưu trữ tuân theo định dạng key:value tương ứng cách dấu phẩy 1.3.2 Array (mảng - danh sách) Định dạng liệu mảng - danh sách JSON: Định dạng liệu mảng - danh sách JSON chuỗi văn có đặc điểm: ● Chứa tập hợp liệu cặp ngoặc vuông ● Các giá trị tập hợp liệu viết theo định dạng JSON ● Các giá trị cách dấu phẩy Thí dụ minh hoạ: Thí dụ định dạng chuỗi JSON lưu thông tin mảng - danh sách: ● Danh sách lưu thông tin giấy phép lái xe người đó, giá trị lưu trữ đối tượng kiểu liệu chuỗi, số ● Trong liệu lưu trữ giấy phép lái xe người tổ chức dạng đối tượng có có thuộc tính “driving_license” lưu trữ giá trị mảng chứa số giấy phép người 1.3.3 Value (giá trị) Định dạng liệu giá trị (các kiểu mà value nhận lưu trữ độc lập) JSON: Định dạng liệu giá trị JSON chuỗi văn có đặc điểm: ● Tuân thủ theo cú pháp JSON, ký pháp gần gũi tương tự với ngôn ngữ tự nhiên ● Các giá trị lồng Thí dụ: 1.3.4 String (chuỗi) Định dạng liệu chuỗi JSON: Định dạng chuỗi JSON giống với chuỗi ngơn ngữ lập trình, bao dấu nháy kép, cần ý tới việc chuỗi có ký tự đặc biệt cần phải xử lý cách thêm dấu gạch chéo trước ký tự để đảm bảo định dạng, nội dung cho chuỗi hoán đổi nhanh 10 1.3.5 Number (kiểu số) Định dạng liệu kiểu số JSON: Định dạng kiểu số JSON văn thể giá trị số, không cần bao dấu ngoặc, hay dấu nháy kép giống kiểu số ngơn ngữ lập trình khác nhiên không hỗ trợ dạng HEX (hệ bát phân) dạng OCT (hệ thập lục phân) 1.4 Lược đồ JSON Khái niệm: Lược đồ JSON có chất định dạng liệu mơ tả JSON, nhiên lại khơng chứa liệu khơng phải đoạn code, hay chương trình máy tính Lược đồ JSON định dạng khai báo để mô tả cấu trúc liệu khác Đây vừa ưu điểm đồng thời nhược điểm (khi chia sẻ với ngơn ngữ lược đồ tương tự khác) Thí dụ: Dữ liệu sau: 11 Dữ liệu đối tượng với thông tin tên, sinh nhật địa cụ thể Vậy lược đồ mô tả cấu trúc liệu (định dạng) cho liệu JSON lược đồ JSON sau: Lược đồ JSON tương ứng: Lược đồ JSON file JSON (theo cú pháp JSON) mô tả lại cấu trúc liệu thể hiện, lược đồ mơ tả xác lại cấu trúc liệu giúp cho trình kiểm tra trình chuẩn hóa liệu, đảm bảo cho q trình thao tác tạo - hố đổi nhanh liệu khơng có sai sót việc có lược đồ JSON giúp ích cho việc đọc hiểu liệu chuẩn hóa hiệu (nhất công việc liên quan đến chuyển giao liệu tảng khác nhau, …) Lược đồ JSON đảm bảo chứa hết tất mô tả cấu trúc liệu, nên ràng buộc định mối quan hệ giá trị kiểu liệu không biểu diễn Đây nhược điểm lược đồ JSON, công cụ xác thực liệu liệu có cấu trúc phức tạp cần tới hai giai đoạn xác thực: ❖ Thứ mức độ lược đồ (mơ tả cấu trúc - hình thức) xem liệu có định dạng mơ tả hay khơng ❖ Thứ hai mức độ nội dung - ngữ nghĩa việc liệu có chiều sâu khối lượng lớn yêu cầu hỗ trợ triển khai kiểm tra ngơn ngữ lập trình lọc, kiểm tra theo tiêu chí mục, mục đích Tổng kết: Lược đồ JSON liệu với định dạng JSON, khơng chứa liệu mà mô tả cấu trúc liệu Lược đồ JSON cơng cụ giúp cho q trình làm việc với JSON trực quan hơn, hiểu đầy đủ liệu (thông qua mô tả lược đồ JSON tương ứng), khơng có lược đồ JSON cịn cơng cụ mạnh hỗ trợ q trình trao đổi thơng tin hiệu hơn, bạn không cần phải ngồi xem tất liệu JSON mà có gì, tổ chức để sử dụng cách hiệu việc hỗ trợ lược đồ JSON 12 Chương 2: Trích xuất liệu từ JSON 2.1 Trích xuất liệu Sau tìm hiểu JSON gì, cách xây dựng chuỗi JSON với cú pháp liệu tương ứng hình thành ghi liệu có cấu trúc lồng nhau, sau mơ tả thơng qua lược đồ JSON, q trình hình thành nên chuỗi JSON định dạng nhằm mục đích trao đổi thơng tin Vậy bước khai thác, trích xuất liệu sau tìm hiểu: Trước hết cần nhớ JSON chuỗi văn có cú pháp JavaScripts, đời từ JavaScripts, phổ biến khơng nhỏ, nhẹ linh hoạt nhiều hệ thống từ nhỏ tới lớn mà phổ biến JavaScripts Chính việc truy xuất liệu JSON có hai điểm sau: ❖ JSON dùng cú pháp JavaScripts nên khơng cần có chương trình trung gian khác để làm việc với JSON JavaScripts (dễ dàng phổ biến JavaScripts khắp nơi) Công việc cần thực hai hàm có sẵn để hốn đổi nhanh liệu JSON Stringify(mã hoá thành JSON) Parse (giải mã từ JSON) ❖ Việc truy xuất liệu giống với JavaScripts Thí dụ: Có chuỗi JSON sau: Chuỗi JSON có nội dung mảng có hai đối tượng, đối tượng có chứa thơng tin tên, msv danh sách giấy phép lái xe Vậy để lấy nội dung liệu mã sinh viên danh sách giấy phép lái xe tương ứng sinh viên danh sách ta cần thực thao tác truy cập danh sách 13 lấy giá trị thuộc tính thứ hai thứ (lấy liệu nào, lớp thứ cần phải quan sát sử dụng lược đồ JSON kèm theo) Xử lý lại liệu, trực quan trình lấy liệu: Lệnh lấy liệu, truy xuất ngôn ngữ lập trình: Cụ thể: Kiểm tra liệu đầu vào, xem lược đồ JSON mơ tả cấu trúc liệu: Chuyển đổi nhanh định dạng liệu: Lúc ta thực truy xuất liệu mà JSON lưu trữ cách bình thường rồi: 14 Ngồi thao tác gán giá trị bình thường: Điều cho phép việc tiếp nhận xử lý liệu sau phản hồi kết lại hệ thống, cập nhật liệu hệ thống mà không cần phải tạo ghi liệu mới, điều cho phép tiết kiệm tài nguyên khai thác hiệu trình sử dụng 15 2.2 Một số mơ hình xử lý liệu khác JSON đời phổ biến theo JavaScripts, biết đến dạng liệu trao đổi nhẹ, phù hợp với việc gửi nhận liệu cho website có sử dụng khai thác khối tài nguyên lớn, lại yêu cầu phần nhỏ, tác vụ đa số nhẹ với lượng liệu khơng q lớn từ JSON lựa chọn phù hợp cho công việc Tuy nhiên dừng lại thành cơng với mơ hình trao đổi liệu người dùng server thông qua website mà JSON cịn giúp ích cơng cụ hiệu việc xây dựng ứng dụng, đặc thù sử dụng cá nhân lại phù hợp với lợi điểm JSON đem lại, nhỏ nhẹ phù hợp cho di động Bây tìm hiểu kỹ thuật trích xuất liệu từ webservice với file liệu json Trong lập trình Android, có hai kĩ thuật trích xuất liệu từ webservice JSON là: ● Sử dụng JSONObject ● Sử dụng đối tượng GSON Nội dung sau: - Đối với JSONObject: ❖ Thiết lập kiểu key - value ❖ Key không null ❖ Value JSONObject, Array phải kiểu liệu bản: chuỗi, số, boolean, null - Đối với GSON: ❖ Được cung cấp ứng dụng Android làm việc với file JSON 16 Mơ hình webservice sử dụng JSON: Giải thích mơ hình: ➢ Client: thiết bị di động chạy Android hay hệ điều hành khác có ứng dụng sử dụng file JSON ➢ Server: webservice bao gồm giao thức truyền nhận liệu, sở liệu API tiền xử lý, … Quá trình hoạt động mơ hình diễn sau: Client mở, cài đặt app sau để có liệu ứng dụng gửi yêu cầu (request) tới cho server Sau nhận request từ client server sử dụng cách chế thực yêu cầu hợp lệ sau đóng gói liệu kết trả (truyền lại) cho Client dạng file json cấu trúc array (danh sách) object Cuối Client nhận file json sử dụng thư viện phân tích xử lý liệu JSON nhận từ Server 17 ... Sau tới phần báo cáo, tìm hiểu định dạng liệu JSON 1.3 Định dạng liệu JSON 1.3.1 Object (đối tượng) Định dạng liệu đối tượng JSON: Định dạng liệu đối tượng JSON chuỗi văn bản: ● Chứa liệu cặp... Lược đồ JSON liệu với định dạng JSON, không chứa liệu mà mô tả cấu trúc liệu Lược đồ JSON công cụ giúp cho trình làm việc với JSON trực quan hơn, hiểu đầy đủ liệu (thông qua mô tả lược đồ JSON tương... tốt lên, ta muốn nói đến kích thước sở liệu web Khi triển khai website cần có nơi lưu trữ liệu hệ quản trị sở liệu (MYSQL, SQL server, … ), điều vấn đề với sở liệu có kích thước nhỏ, người dùng