Mmaiqai.com
🧩 Automation Testing · Chương 2 · Mục 2.4

Làm việc với JSON trong Python

JSON là định dạng văn bản trao đổi dữ liệu, gần giống hệt dict Python — mọi API (kể cả Restful-Booker từ Chương 7) đều dùng JSON.

Thư viện json có sẵn giúp chuyển qua lại giữa dict và JSON. Trước hết là cặp dumps/loads — làm việc với chuỗi JSON, dùng khi gửi dữ liệu lên API hoặc đọc dữ liệu API trả về:

json.dumps()json.loads()
Chiều chuyểndict → chuỗi JSONchuỗi JSON → dict
Nghĩa tên"dump string" — xuất ra chuỗi"load string" — nạp từ chuỗi vào
Dùng khi nàoChuẩn bị dữ liệu để gửi lên APIĐọc dữ liệu nhận về từ API

Cặp json.dump()/json.load() (không có "s") làm y hệt vậy nhưng với file thay vì chuỗi.

Tạo file json_demo.py — hàm tao_booking chỉ để có dict mẫu, dùng lại từ 2.3:

import json
 
 
def tao_booking(firstname, lastname, totalprice):
"""Tao 1 dict du lieu booking theo dung cau truc can gui cho API."""
return {
"firstname": firstname,
"lastname": lastname,
"totalprice": totalprice,
}
 
 
booking_moi = tao_booking("Lan", "Nguyen", 350000)
 
booking_json = json.dumps(booking_moi)
print(booking_json)
 
du_lieu = json.loads(booking_json)
print(du_lieu["firstname"])
 
with open("booking.json", "w") as f:
json.dump(booking_moi, f)
 
with open("booking.json", "r") as f:
du_lieu_doc_lai = json.load(f)
 
print(du_lieu_doc_lai)

Giải thích từng dòng lệnh:

DòngGiải thíchIn ra dòng nào ở Kết quả
import jsonNạp thư viện json có sẵn trong Python
booking_moi = tao_booking(...)Tạo dict booking, giống hệt mục 2.3
booking_json = json.dumps(booking_moi)Chuyển dict thành chuỗi JSON (dumps = "dump string")
print(booking_json)In chuỗi JSON vừa tạodòng 1
du_lieu = json.loads(booking_json)Chuyển ngược chuỗi JSON thành dict (loads = "load string")
print(du_lieu["firstname"])Lấy key "firstname" từ dict vừa chuyểndòng 2: Lan
with open("booking.json", "w") as f:Mở (hoặc tạo mới) file, chế độ ghi ("w"), gán vào biến f. with tự động đóng file lại sau khi dùng xong (kể cả khi có lỗi) — không cần tự gọi f.close()
json.dump(booking_moi, f)Ghi dict thẳng vào file dưới dạng JSON (không có "s" — khác dumps trả về chuỗi)
with open("booking.json", "r") as f:Mở lại file, chế độ đọc ("r"), cũng tự đóng khi xong
du_lieu_doc_lai = json.load(f)Đọc file, chuyển thành dict
print(du_lieu_doc_lai)In dict vừa đọcdòng 3

Kết quả:

KẾT QUẢ
{"firstname": "Lan", "lastname": "Nguyen", "totalprice": 350000}
Lan
{'firstname': 'Lan', 'lastname': 'Nguyen', 'totalprice': 350000}

Để ý dòng đầu và dòng cuối: dict Python in bằng nháy đơn '...', còn JSON luôn dùng nháy kép "..." — khác biệt nhỏ này là lý do cần json.dumps/json.loads để chuyển đổi đúng chuẩn, thay vì coi 2 thứ là một.

⚡ GHI NHỚ NHANH
  • Hàm (def): gói code để dùng lại, có thể nhận tham số và return kết quả.
  • f-string: chuỗi f"..." cho phép chèn biến bằng {ten_bien}.
  • List: danh sách có thứ tự, đặt trong [], duyệt bằng for.
  • Dict: dữ liệu dạng key: value, đặt trong {}, lấy giá trị bằng dict["key"].
  • JSON: định dạng trao đổi dữ liệu của API. json.dumps/json.loads chuyển đổi dict ↔ chuỗi JSON; json.dump/json.load ghi/đọc thẳng ra file.
  • with ... as ...: mở file (hoặc tài nguyên khác) an toàn — tự động đóng lại sau khi dùng xong, kể cả khi code bên trong bị lỗi giữa chừng.

Chương sau: cài Playwright, chạy test pytest đầu tiên — và bắt đầu dùng chính dự án thật trên GitHub từ đây.