Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ

Mô-đun tuần tự hóa
Mô-đun JSON

Mục tiêu

Đến trạm dịch vụ và đảm bảo dữ liệu được lưu trữ đúng cách bằng cách sử dụng module JSON để định dạng các tệp.

Có một trạm dịch vụ ở phía nam tòa nhà phụ trong khu vực xây dựng mới; toàn bộ khu vực này sẽ được tái phát triển để trồng trọt. Trạm có nhiều thiết bị đầu cuối xử lý dữ liệu cho dự án phát triển mới. Chúng ta có thể tự nhập dữ liệu thủ công, nhưng sẽ mất rất nhiều thời gian. Để xử lý dữ liệu, chúng ta có thể sử dụng JSON (JavaScript Object Notation) — một định dạng dữ liệu độc lập với ngôn ngữ lập trình và lưu trữ thông tin ở dạng dễ đọc, thuận tiện cho việc lưu trữ và truyền tải.

Để sử dụng JSON trong Python, chúng ta có thể dùng import json để truy cập các hàm JSON. Trong mục đích của chúng ta, chúng ta sẽ sử dụng các hàm sau:

  • json.loads(): Chuyển chuỗi JSON thành dữ liệu Python, nhận một tham số, đó là chuỗi bạn muốn phân tích thành Python.
  • json.dumps(): Chuyển dữ liệu Python thành chuỗi JSON, hàm này có thể nhận tối đa bốn (4) tham số, chỉ tham số đầu tiên là bắt buộc. Chúng bao gồm:
    1. Dữ liệu Python bạn muốn chuyển thành JSON: có thể thuộc các kiểu dữ liệu sau: dictionary, list, tuple, string, integer, float, boolean và None.
    2. indent: số khoảng trắng bạn muốn thêm vào đầu mỗi dòng dữ liệu.
    3. separators: các chuỗi ký tự bạn muốn xuất hiện giữa và/hoặc cuối mỗi điểm dữ liệu.
    4. sort_keys: sắp xếp các khóa của dictionary theo thứ tự bảng chữ cái nếu bạn đang chuyển đổi một dictionary.

Để bắt đầu, đến vị trí dấu X màu vàng tại trạm tiền đồn bên trái và đối diện với bàn có bản ghi. Sử dụng hàm read() để kiểm tra thông tin cần thiết nhằm xác nhận trạng thái của thiết bị đầu cuối và ghi chú lại. Sau đó, đi đến vị trí dấu X màu sáng trước thiết bị đầu cuối, sẽ có một hằng số tên là transmission, dùng json.dumps() để định dạng nó thành JSON để chúng ta có thể chuyển đổi, như sau: transmission = json.dumps(transmission).

Tạo một dictionary tên load và lưu kết quả của json.loads() với hằng số transmission là đối số. Việc này sẽ chuyển JSON thành Python để có thể truy cập thông tin dễ dàng. Sử dụng hàm speak() với các khóa được liệt kê trong bản ghi và dictionary load bạn vừa tạo. Ví dụ: player.speak(load["system"]), làm tương tự cho tất cả các khóa.

Sau khi kiểm tra thông tin trên thiết bị đầu cuối, đi xuống trạm, vào bên trong và di chuyển đến vị trí dấu X màu sáng trên thảm xanh. Kiểm tra bản ghi bằng hàm read(), ghi chú lại các giá trị; trong trình soạn thảo có một dictionary đã viết sẵn tên profile, điền các giá trị còn thiếu bằng thông tin trong bản ghi.

Đi đến vị trí dấu X màu tối trên thảm xanh, đối diện với thiết bị đầu cuối, tạo biến transfer và lưu giá trị của json.dumps() với dictionary profile làm đối số duy nhất. Việc này sẽ chuyển dictionary thành một chuỗi JSON. Sử dụng hàm display() đã viết sẵn và truyền chuỗi JSON transfer để lưu dữ liệu vào thiết bị đầu cuối.

Di chuyển đến vị trí dấu X màu tối trên thảm đỏ và sử dụng hàm read() để kiểm tra dữ liệu đã nhập trước đó trên thiết bị đầu cuối. Dữ liệu chưa được trình bày đúng định dạng; để lưu trữ đúng cách, nó cần được lưu và định dạng dưới dạng JSON. Dữ liệu hiện đang được lưu trong một hằng số dictionary tên red_data, tạo một biến tên red_storage và lưu giá trị của hàm json.dumps().

Để định dạng dữ liệu, thêm các đối số sau cho hàm: truyền red_data để chuyển hằng số thành JSON, thêm indent và đặt giá trị là 5 để định dạng văn bản, thêm separators với ("- ", " = ") để thêm các ký hiệu này ở cuối mỗi dòng. Dòng lệnh sẽ như sau: red_storage = json.dumps(red_data, indent=5, separators=("- ", " = ")). Sử dụng hàm display() đã viết sẵn và truyền chuỗi JSON red_storage để lưu và hiển thị dữ liệu đã được định dạng.

Di chuyển đến vị trí dấu X màu tối trên thảm xanh dương, đối diện thiết bị đầu cuối và sử dụng hàm read(). Giống như trước, dữ liệu chưa được lưu đúng và cần được định dạng cũng như sắp xếp. Dữ liệu đang được lưu trong hằng số blue_data, tạo biến blue_storage và lưu giá trị của hàm json.dumps().

Với các đối số: truyền blue_data để chuyển hằng số thành JSON, thêm indent và đặt giá trị là 4 để định dạng văn bản, thêm separators với (".0", " = ") để thêm các ký hiệu này ở cuối mỗi dòng. Bên cạnh đó, thêm tham số sort_keys ở đối số cuối cùng và đặt giá trị là True, như sau: sort_keys=True. Sử dụng hàm display() đã viết sẵn và truyền chuỗi JSON blue_storage để lưu và hiển thị dữ liệu đã được sắp xếp, hoàn thành cấp độ.

Sách Mã