Professional Documents
Culture Documents
JSON
JSON
1
Mục lục
Lời nói đầu 1
Mục lục 2
CHƯƠNG 1: JSON LÀ GÌ? 3
1.1 Định nghĩa 3
1.2 Cấu trúc JSON 4
1.3 Định dạng dữ liệu trong JSON 7
1.3.1 Object (đối tượng) 7
1.3.2 Array (mảng - danh sách) 8
1.3.3 Value (giá trị) 9
1.3.4 String (chuỗi) 10
1.3.5 Number (kiểu số) 11
1.4 Lược đồ JSON 11
Chương 2: Trích xuất dữ liệu từ JSON 13
2.1 Trích xuất dữ liệu cơ bản 13
2.2 Một số mô hình xử lý dữ liệu khác 16
2
CHƯƠNG 1: JSON LÀ GÌ?
Bằng quan sát ta có thể thấy rằng cú pháp của JSON rất đơn giản, nó chỉ đơn thuần là đoạn
văn bản chứa thông tin với định dạng dữ liệu gồm hai phần là key và value được bắt cặp
tương ứng ngăn cách bởi dấu : (dấu hai chấm), điều này tương ứng trong cơ sở dữ liệu là tên
field và giá trị của nó với bản ghi tương ứng. Cụ thể, cấu trúc của JSON có các yêu cầu sau:
● Chuỗi JSON được nằm trong cặp dấu ngoặc nhọn.
● Các giá trị key, value trong chuỗi JSON nằm trong cặp dấu nháy kép (“), trừ value là
các giá trị số, lưu ý là nếu đặt các giá trị key, value bên trong cặp dấu nháy đơn (‘) cú
pháp như vậy không phải là cú pháp chuẩn của JSON. Trường hợp giá trị của value có
3
chứa dấu nháy kép thì ta dùng thêm dấu \ (dấu sổ chéo) trước dấu nháy kép trong
value để tạo thành \” phân biệt với dấu nháy kép trong cú pháp của 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 các bộ key : value với nhau. Ở sau cùng bộ key : value cuối không sử dụng dấu
phẩy.
● Key được dùng có các quy ước về đặt tên:
○ Dùng chữ không dấu hoặc 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ự đầu tiên không phải ký tự số.
Bằng việc tìm hiểu các thông tin sơ bộ về json cũng như cảm quan cá nhân khi nhìn vào các
thí dụ, chúng ta đã hiểu cơ bản JSON là gì? Tại sao nó dễ nhìn và trực quan hơn? nhỏ gọn tới
đâu mà được ứng dụng ngày càng phổ biến. Để tiếp nối bài báo cáo tìm hiểu về JSON, nhóm
em sẽ tiếp tục trình bày nội dung cụ thể hơn về cấu trúc JSON.
4
Quan sát ta nhận thấy rằng sẽ không ổn nếu như sử dụng cú pháp như vậy để lưu trữ
thông tin các sinh viên bằng chuỗi JSON vì:
+ Các tên thuộc tính không nhất quán.
+ Nếu số lượng sinh viên cần lưu trữ lớn thì việc đọc dữ liệu là phức tạp khi tất cả các
thông tin của sinh viên được lưu trữ dưới dạng là các thuộc tính của một đối tượng
duy nhất, rồi khi phát sinh vấn đề sắp xếp dữ liệu.
+ Về phía cảm nhận nhìn cá nhân thấy rằng dữ liệu lưu trữ như vậy kém trực quan hơn
khi tên thuộc tính không còn nguyên bản (cố định mang nghĩa duy nhất) key là name
chỉ có lưu value là tên của sinh viên nào đó chứ không cần thiết là phải gánh thêm nội
dung là số thứ tự bao nhiêu hay là số gì có ý nghĩa gì, key chỉ nên là key thôi.
Vì vậy cần dùng cấu trúc phù hợp hơn để lưu trữ dữ liệu dạng danh sách như vậy, ở
đây chúng ta sẽ quan sát cấu trúc của một danh sách với định dạng JSON:
Ngay khi nhìn bằng mắt thường ta có thể dễ dàng quan sát và nhận biết được rằng
chuỗi JSON này đang thể hiện một danh sách, lưu trữ thông tin của 3 đối tượng với mỗi đối
tượng có hai thuộc tính là “name” và “msv”, dữ liệu có cấu trúc rõ ràng và gọn gàng hơn.
Về cấu trúc của một mảng được thể hiện dưới dạng chuỗi JSON có đặc điểm sau:
+ Dùng cặp ngoặc vuông ([]) bao ngoài cùng
5
+ Bên trong là dữ liệu của các phần tử trong mảng được viết dưới dạng chuỗi JSON
tương ứng và ngăn cách nhau bởi dấu phẩy.
6
1.3 Định dạng dữ liệu trong JSON
Định dạng dữ liệu đối tượng trong JSON là một chuỗi văn bản:
● Chứa dữ liệu trong cặp ngoặc nhọn.
● Trong cặp ngoặc nhọn chứa tập hợp các cặp key-value cách nhau bởi dấu hai chấm
(:).
● Các cặp key-value ngăn cách với nhau bằng dấu phẩy (,).
Thí dụ minh hoạ:
Thí dụ về định dạng của một chuỗi JSON lưu thông tin của một đố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ó 3 thuộc tính bao gồm điểm thường xuyên,
điểm giữa kỳ và điểm cuối kỳ lưu trữ tuân theo định dạng key:value tương ứng cách
nhau bởi dấu phẩy.
7
1.3.2 Array (mảng - danh sách)
Định dạng dữ liệu mảng - danh sách trong JSON:
Định dạng dữ liệu mảng - danh sách trong JSON là một chuỗi văn bản có đặc điểm:
● Chứa tập hợp các dữ liệu trong cặp ngoặc vuông.
● Các giá trị trong tập hợp dữ liệu viết theo định dạng JSON.
● Các giá trị cách nhau bằng dấu phẩy.
Thí dụ về định dạng của một chuỗi JSON lưu thông tin của một mảng - danh sách:
● Danh sách lưu thông tin giấy phép lái xe của người nào đó, giá trị lưu trữ là các đối
tượng hoặc cũng có thể là các kiểu dữ liệu như chuỗi, số.
● Trong mỗi dữ liệu lưu trữ về giấy phép lái xe của một người được tổ chức dưới dạng
đối tượng trong có có thuộc tính “driving_license” lưu trữ giá trị là một mảng chứa số
giấy phép của người đó.
8
1.3.3 Value (giá trị)
Định dạng dữ liệu giá trị (các kiểu mà value có thể nhận hoặc lưu trữ độc lập) trong
JSON:
Định dạng dữ liệu giá trị trong JSON là một chuỗi văn bản có đặc điểm:
● Tuân thủ theo cú pháp của JSON, ký pháp gần gũi tương tự như với ngôn ngữ tự
nhiên.
● Các giá trị có thể lồng nhau.
Thí dụ:
9
1.3.4 String (chuỗi)
Định dạng dữ liệu chuỗi trong JSON:
Định dạng chuỗi trong JSON rất giống với chuỗi trong các ngôn ngữ lập trình, được
bao bởi dấu nháy kép, ngoài ra cần chú ý tới việc trong chuỗi có các ký tự đặc biệt cần phải
được xử lý bằng cách thêm dấu gạch chéo trước các ký tự đó để đảm bảo định dạng, nội dung
cho chuỗi khi hoán đổi nhanh.
10
1.3.5 Number (kiểu số)
Định dạng dữ liệu kiểu số trong JSON:
Định dạng kiểu số trong JSON là văn bản thể hiện đúng giá trị của số, không cần bao
bởi dấu ngoặc, hay dấu nháy kép nó giống như kiểu số trong các ngôn ngữ lập trình khác tuy
nhiên không hỗ trợ dạng HEX (hệ bát phân) và dạng OCT (hệ thập lục phân).
11
Dữ liệu này là một đối tượng với thông tin tên, sinh nhật và địa chỉ cụ thể. Vậy lược đồ mô tả
cấu trúc dữ liệu (định dạng) cho dữ liệu JSON trên là một lược đồ JSON như sau:
Lược đồ JSON tương ứng:
Lược đồ JSON trên là một file JSON (theo đúng cú pháp JSON) mô tả lại cấu trúc
của dữ liệu thể hiện, lược đồ mô tả chính xác lại cấu trúc dữ liệu và giúp cho quá trình kiểm
tra quá trình chuẩn hóa dữ liệu, đảm bảo cho quá trình thao tác tạo - hoá đổi nhanh dữ liệu
không có sai sót nào cũng như việc có lược đồ JSON giúp ích cho việc đọc hiểu dữ liệu đã
chuẩn hóa hiệu quả hơn (nhất là công việc liên quan đến chuyển giao dữ liệu giữa các nền
tảng khác nhau, …).
Lược đồ JSON không thể đảm bảo chứa hết tất cả các mô tả cấu trúc dữ liệu, nên vẫn
còn ràng buộc nhất định về mối quan hệ giữa các giá trị kiểu dữ liệu không biểu diễn được.
Đây cũng là nhược điểm của lược đồ JSON, do vậy bất cứ công cụ xác thực dữ liệu nào nhất
là đối với các dữ liệu có cấu trúc phức tạp sẽ cần tới hai giai đoạn xác thực:
❖ Thứ nhất là ở mức độ lược đồ (mô tả cấu trúc - hình thức) xem dữ liệu có đúng định
dạng mô tả hay không.
❖ Thứ hai là ở mức độ nội dung - ngữ nghĩa việc này đối với các dữ liệu có chiều sâu và
khối lượng lớn yêu cầu được hỗ trợ triển khai kiểm tra bằng các ngôn ngữ lập trình
lọc, kiểm tra theo một tiêu chí mục, mục đích nào đó.
Tổng kết: Lược đồ JSON cũng là một dữ liệu với định dạng JSON, nó không chứa dữ liệu mà
chỉ mô tả cấu trúc của dữ liệu thôi. Lược đồ JSON là công cụ giúp cho quá trình làm việc với
JSON trực quan hơn, có thể hiểu đầy đủ nhất về dữ liệu (thông qua bản mô tả là lược đồ
JSON tương ứng), không chỉ có vậy lược đồ JSON còn là công cụ mạnh hỗ trợ quá trình trao
đổi thông tin được hiệu quả hơn, bạn không cần phải ngồi xem tất cả dữ liệu JSON mà mình
có là gì, tổ chức ra sao để có thể sử dụng một cách hiệu quả việc này sẽ được hỗ trợ bởi lược
đồ JSON.
12
Chương 2: Trích xuất dữ liệu từ JSON
Chuỗi JSON trên có nội dung là một mảng có hai đối tượng, mỗi đối tượng có chứa
thông tin tên, msv và danh sách giấy phép lái xe.
Vậy để có thể lấy được nội dung dữ liệu mã sinh viên và danh sách giấy phép lái xe
tương ứng của sinh viên đầu tiên trong danh sách ta cần thực hiện thao tác truy cập danh sách
lấy giá trị của thuộc tính thứ hai và thứ 3 (lấy dữ liệu nào, lớp thứ bao nhiêu cần phải quan sát
và sử dụng lược đồ JSON kèm theo)
13
Xử lý lại dữ liệu, trực quan quá trình lấy dữ liệu:
Lệnh lấy dữ liệu, truy xuất như ngôn ngữ lập trình:
Cụ thể:
Kiểm tra dữ liệu đầu vào, có thể xem lược đồ JSON mô tả cấu trúc dữ liệu:
Lúc này ta có thể thực hiện truy xuất dữ liệu mà JSON lưu trữ một cách bình thường rồi:
14
Ngoài ra chúng ta vẫn có thể thao tác gán mới giá trị bình thường:
Điều này cho phép việc tiếp nhận và xử lý dữ liệu sau đó phản hồi kết quả lại hệ
thống, cập nhật dữ liệu hệ thống mà không cần phải tạo bản ghi dữ liệu mới, điều này cho
phép tiết kiệm tài nguyên và khai thác hiệu quả hơn trong quá trình sử dụng.
15
2.2 Một số mô hình xử lý dữ liệu khác
JSON ra đời và phổ biến theo JavaScripts, được biết đến như một dạng dữ liệu trao
đổi nhẹ, phù hợp với việc gửi nhận dữ liệu cho các website có sử dụng và khai thác khối tài
nguyên lớn, nhưng lại chỉ yêu cầu một phần nhỏ, các tác vụ đa số là nhẹ với lượng dữ liệu
không quá lớn từ đó JSON là lựa chọn phù hợp cho công việc này.
Tuy nhiên không chỉ có dừng lại ở thành công với mô hình trao đổi dữ liệu giữa người
dùng và server thông qua website mà JSON còn giúp ích và là công cụ hiệu quả trong việc
xây dựng các ứng dụng, đặc thù là sử dụng cá nhân lại càng phù hợp với lợi điểm JSON đem
lại, nhỏ nhẹ phù hợp cho di động. Bây giờ chúng ta sẽ cùng tìm hiểu các kỹ thuật trích xuất
dữ liệu từ webservice với file dữ liệu .json.
Trong lập trình Android, có hai kĩ thuật trích xuất dữ liệu từ webservice bằng JSON
đó là:
● Sử dụng JSONObject.
● Sử dụng đối tượng GSON.
16
Mô hình webservice sử dụng JSON:
17