Định dạng đầu ra JSON
Bài học 5 trên 9 trong khóa học JSON trong Python của Coddy.
Khi làm việc với dữ liệu JSON, việc định dạng đầu ra để dễ đọc hơn thường rất hữu ích. Hàm json.dumps() của Python cung cấp các tham số để kiểm soát cách định dạng đầu ra JSON, giúp nội dung dễ đọc hơn. Quá trình này thường được gọi là “in đẹp” (pretty-printing).
Tham số indent
Tham số indent trong json.dumps() cho phép bạn chỉ định số khoảng trắng dùng để thụt lề. Cách này tạo ra cấu trúc phân cấp dễ đọc hơn:
import json
data = {"name": "John", "age": 30, "city": "New York"}
# Không thụt lề
print(json.dumps(data))
# Có thụt lề
print(json.dumps(data, indent=2))
Đầu ra với indent=2 sẽ là:
{
"name": "John",
"age": 30,
"city": "New York"
}
Tham số separators
Tham số separators cho phép bạn chỉ định dấu phân cách giữa các phần tử và giữa khóa với giá trị. Đây là một tuple gồm hai chuỗi: (item_separator, key_separator).
# Dấu phân cách mặc định
print(json.dumps(data, indent=2))
# Dấu phân cách tùy chỉnh
print(json.dumps(data, indent=2, separators=(', ', ': ')))
Dấu phân cách mặc định là (', ', ': '). Bạn có thể dùng tham số này để làm đầu ra gọn hơn hoặc thêm khoảng trắng.
Kết hợp các tham số
Bạn có thể kết hợp các tham số này để kiểm soát cách định dạng đầu ra JSON một cách chi tiết hơn:
formatted_json = json.dumps(data, indent=4, separators=(', ', ': '))
print(formatted_json)
Cách kết hợp này tạo ra đầu ra JSON được định dạng đẹp mắt, dễ đọc. Cách này đặc biệt hữu ích khi làm việc với các cấu trúc lồng nhau phức tạp hoặc khi bạn cần trình bày dữ liệu JSON theo cách dễ đọc hơn.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Thử thách
DễTạo một hàm (function) định dạng cấu trúc JSON lồng nhau bằng cách dùng thụt lề và dấu phân cách tùy chỉnh. Hàm cần:
- Nhận ba tham số (parameter): một từ điển hoặc danh sách trong Python, mức thụt lề và một cờ boolean để chọn đầu ra gọn.
- Dùng
json.dumps()để chuyển đầu vào thành chuỗi JSON. - Đặt mức thụt lề theo giá trị đã chỉ định nếu cờ gọn là False, nếu không thì không thụt lề.
- Dùng dấu phẩy theo sau là một dấu cách (", ") làm dấu phân cách phần tử và dấu hai chấm theo sau là một dấu cách (": ") làm dấu phân cách khóa khi cờ gọn là False. Dùng dấu phẩy (",") và dấu hai chấm (":") không có dấu cách khi cờ gọn là True.
- Trả về chuỗi JSON đã định dạng.
Đầu vào sau sẽ được cung cấp:
{"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}}
4
false
In ra chuỗi JSON đã định dạng.
Tự làm thử
import json
# Đọc đầu vào
json_input = input()
indent_level = int(input())
compact = input().lower() == 'true'
# Phân tích cú pháp đầu vào JSON
data = json.loads(json_input)
def format_json(data, indent, compact):
# TODO: Viết code của bạn ở đây
# Viết hàm (function) định dạng JSON tùy chỉnh
pass
# Định dạng JSON và in ra kết quả
formatted_json = format_json(data, indent_level, compact)
print(formatted_json)Tất cả bài học trong JSON trong Python
Tự luyện tập: Trình biên dịch Python online
Định dạng và khám phá JSON bất kỳ: Công cụ định dạng JSON