You are on page 1of 18

ĐẠ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 – 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 dữ liệu


Lời nói đầu
Đi cùng với sự ra đời của máy tính, các sản phẩm ứng dụng các công nghệ mới và
hiệu quả vào các sản phẩm giúp cho cuộc sống trở nên tiện lợi và dễ dàng hơn. Bên cạnh sự
phát triển của máy tính và hệ thống thông tin, kích thước dữ liệu cũng tăng lên và các tác vụ
yêu cầu ngày càng phức tạp và cần xử lý một các tốt lên, ở đây ta đang muốn nói đến kích
thước của các cơ sở dữ liệu web. Khi triển khai các website cần có nơi lưu trữ các dữ liệu đó
chính là hệ quản trị cơ sở dữ liệu (MYSQL, SQL server, … ), điều này không phải là vấn đề
với các cơ sở dữ liệu có kích thước nhỏ, ít người dùng và việc triển khai trực tiếp trên các
thiết bị người dùng là hoàn toàn khả thi tuy nhiên nó sẽ không phù hợp với một cơ sở dữ liệu
lớn - điều mà ngày càng trở nên phổ biến hiện nay, cũng như khó có thể đáp ứng cho một số
lượng người dùng lớn với mỗi nhu cầu sử dụng cơ bản nhất định, sẽ không phù hợp nếu như
yêu cầu người dùng cần cài đặt nhiều công cụ hỗ trợ của các hệ cơ sở dữ liệu. Giải pháp cũ
được sử dụng là các dạng file dữ liệu sql rút gọn hay các tệp xml để lưu trữ dữ liệu, việc này
đã giúp giải quyết vấn đề cho các yêu cầu tác vụ cơ bản nhỏ gọn tuy nhiên hai định dạng dữ
liệu trên vẫn chưa thực sự giải quyết triệt để các vấn đề như tinh gọn, giảm tải các cài đặt
không cần thiết cho người dùng cũng như chưa dễ dàng trực quan nội dung dữ liệu với người
dùng. Chính từ việc đó JSON ra đời tạo nên một chuẩn lưu trữ dữ liệu mới nhẹ hơn, dễ dàng
sử dụng và trực quan hơn, sau đây nhóm em sẽ báo cáo phần tìm hiểu JSON của nhóm.

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Ì?

1.1 Định nghĩa


JSON là các kí tự viết tắt của Javascript Object Notation - là một dạng dữ liệu đối
tượng (ký pháp đối tượng) của Javascript - JSON là một định dạng hoán vị dữ liệu nhanh,
JSON là một dạng văn bản - dữ liệu tuân theo cú pháp chuẩn mô tả lại dữ liệu đối tượng của
Javascript (cơ sở dựa trên ngôn ngữ lập trình JavaScripts). Định dạng của JSON (định dạng là
văn bản, hoàn toàn độc lập với các ngôn ngữ lập trình) rất thân thiện với người dùng và các
ngôn ngữ lập trình khi mà nó được hỗ trợ bởi hầu hết các ngôn ngữ lập trình có thể đọc trực
tiếp bằng một hàm, cho phép việc lưu trữ và trao đổi dữ liệu đối với các nền 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 của JSON còn thân thiện với người
dùng khi mà chúng ta có thể đọc hiểu được nội dung dữ liệu mà file JSON lưu trữ, thể hiện.
Với ưu thế về tính nhỏ, nhẹ và trực quan như vậy, JSON có thể sử dụng để lưu trữ dữ
liệu, lưu một bản ghi trong cơ sở dữ liệu một cách dễ dàng dưới định dạng file .json.
JSON có định dạng đơn giản, dễ sử dụng hơn XML nhiều nên tính ứng dụng của
JSON cao và được sử dụng phổ biến hơn trong các công việc như trao nhận dữ liệu website
hay xây dựng các ứng dụng nhỏ gọn, sau đây chúng ta cùng đi vào tìm hiểu cụ thể hơn về
JSON qua cú pháp và các ví dụ minh hoạ.
VD: JSON sẽ lưu thông tin của một người dùng như sau (minh hoạ cơ bản):

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.

1.2 Cấu trúc JSON


Trong mục 1.1 về định nghĩa đã trình bày về cú pháp đơn giản của JSON bao gồm
kiểu cách định dạng key - value theo cặp, chứa trong dấu nháy kép, phân định bằng dấu hai
chấm, … Bằng những cú pháp đơn giản của JSON đã thể hiện, miêu tả lại được các dữ liệu
đơn giản như một đối tượng thành văn bản với định dạng của JSON, tuy nhiên những yêu cầu
thực tế cần có đáp ứng tốt hơn, lưu trữ không chỉ nhẹ, trực quan dễ dùng mà cần phải đáp ứng
các tiêu chí về khối lượng dữ liệu truyền tải, lưu trữ, … Vậy thì cấu trúc của JSON sẽ giải
quyết vấn đề như thế nào chúng ta cùng xem xét thí dụ sau và làm rõ hơn cấu trúc của chuỗi
JSON.
Thí dụ: Cần xây dựng chuỗi JSON chứa thông tin của 3 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 như dùng cú pháp như ở phần 1 thì chúng ta sẽ thu được chuỗi JSON như
sau:

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.

Ngoài ra còn một số điểm về cấu trúc của chuỗi JSON:


● Các kiểu dữ liệu có thể biểu diễn dưới 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 và null.
● Cấu trúc của chuỗi JSON theo chuẩn, phân lớp rõ ràng và trực quan.
Sau đây chúng ta sẽ đi tới phần tiếp theo của bài báo cáo, tìm hiểu về các định dạng dữ liệu
trong JSON.

6
1.3 Định dạng dữ liệu trong JSON

1.3.1 Object (đối tượng)


Định dạng dữ liệu đối tượng 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ụ minh hoạ:

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).

1.4 Lược đồ JSON


Khái niệm: Lược đồ JSON có bản chất là một định dạng dữ liệu mô tả bằng chính
JSON, tuy nhiên nó lại không chứa dữ liệu và cũng không phải là một đoạn code, hay chương
trình máy tính.
Lược đồ JSON chỉ là một định dạng khai báo để mô tả cấu trúc của dữ liệu khác. Đây
vừa là ưu điểm và đồng thời cũng là nhược điểm (khi nó chia sẻ với các ngôn ngữ lược đồ
tương tự khác).
Thí dụ: Dữ liệu sau:

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

2.1 Trích xuất dữ liệu cơ bản


Sau khi đã tìm hiểu về JSON là gì, cách xây dựng các chuỗi JSON với các cú pháp dữ
liệu tương ứng hình thành các bản ghi dữ liệu có cấu trúc lồng nhau, sau đó được mô tả thông
qua lược đồ JSON, đó là quá trình hình thành nên các chuỗi JSON và định dạng nhằm mục
đích trao đổi thông tin. Vậy bước tiếp theo là làm sao có thể khai thác, trích xuất dữ liệu sau
đây chúng ta sẽ cùng tìm hiểu:
Trước hết cần nhớ rằng JSON là một chuỗi văn bản có cú pháp JavaScripts, nó ra đời
từ JavaScripts, phổ biến không chỉ bởi nó nhỏ, nhẹ và linh hoạt trong nhiều hệ thống từ nhỏ
tới lớn mà còn bởi sự phổ biến của JavaScripts. Chính vì thế việc truy xuất dữ liệu JSON có
hai điểm sau:
❖ JSON dùng cú pháp JavaScripts nên không cần có bất cứ chương trình trung gian nào
khác để làm việc với JSON trong JavaScripts (dễ dàng và phổ biến bởi JavaScripts ở
khắp mọi nơi). Công việc này chỉ cần thực hiện bằng hai hàm có sẵn để hoán đổi
nhanh dữ liệu JSON đó là Stringify(mã hoá thành JSON) và Parse (giải mã từ JSON).
❖ Việc truy xuất dữ liệu giống như với JavaScripts.
Thí dụ:
Có một chuỗi JSON sau:

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:

Chuyển đổi nhanh định dạng 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.

Nội dung như sau:


- Đối với JSONObject:
❖ Thiết lập một kiểu key - value.
❖ Key là duy nhất và không null.
❖ Value của JSONObject, Array phải là các kiểu dữ liệu cơ bản: chuỗi, số,
boolean, null.
- Đối với GSON:
❖ Được cung cấp khi ứ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: là 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 các giao thức truyền nhận dữ liệu, cơ sở dữ liệu và các
API tiền xử lý, …
Quá trình hoạt động của mô hình được diễn ra như sau: Client mở, cài đặt app sau đó
để có được dữ liệu ứng dụng sẽ gửi yêu cầu (request) tới cho server. Sau khi nhận
được request từ client server sẽ sử dụng cách cơ chế thực hiện các yêu cầu hợp lệ sau
đó đóng gói dữ liệu kết quả và trả về (truyền lại) cho Client dưới dạng là file json ở
cấu trúc là array (danh sách) hoặc là object. Cuối cùng khi Client nhận được file json
sẽ sử dụng thư viện phân tích và xử lý dữ liệu JSON nhận được từ Server.

17

You might also like