Đáp án chương 14: Làm việc với JSON và XML
Bài Tập 1: Chuyển đổi từ điển sau thành định dạng JSON
-
Yêu cầu: Chuyển đổi từ điển sau thành định dạng JSON.
-
Dữ liệu đầu vào:
data = {"key1" : "value1", "key2" : "value2"}
-
Kết quả mong đợi:
{"key1" : "value1", "key2" : "value2"} -
Gợi ý:
- Sử dụng thư viện
jsoncó sẵn trong Python. - Sử dụng hàm
json.dumps()để chuyển đổi từ điển thành chuỗi JSON.
- Sử dụng thư viện
Bài Tập 2: Truy cập giá trị của key2 từ JSON sau
-
Yêu cầu: Truy cập giá trị của
key2từ JSON sau. -
Dữ liệu đầu vào:
sampleJson = """{"key1": "value1", "key2": "value2"}"""
-
Kết quả mong đợi:
value2 -
Gợi ý:
- Sử dụng hàm
json.loads()để chuyển đổi chuỗi JSON thành từ điển Python. - Truy cập giá trị của khóa
key2từ từ điển.
- Sử dụng hàm
Bài Tập 3: Hiển thị JSON dữ liệu sau với định dạng đẹp
-
Yêu cầu: Hiển thị JSON dữ liệu sau với định dạng đẹp, sử dụng mức thụt đầu dòng là 2 và dấu phân cách giữa các khóa và giá trị là
",", " = ". -
Dữ liệu đầu vào:
sampleJson = {"key1": "value1", "key2": "value2"}
-
Kết quả mong đợi:
{ "key1" = "value1", "key2" = "value2" } -
Gợi ý:
- Sử dụng hàm
json.dumps()với các tùy chọnindentvàseparatorsđể định dạng JSON.
- Sử dụng hàm
Bài Tập 4: Sắp xếp các khóa JSON và ghi chúng vào tệp
-
Yêu cầu: Sắp xếp các khóa JSON theo thứ tự bảng chữ cái và ghi chúng vào tệp.
-
Dữ liệu đầu vào:
sampleJson = {"id" : 1, "name" : "value2", "age" : 29}
-
Kết quả mong đợi:
{ "age": 29, "id": 1, "name": "value2" } -
Gợi ý:
- Sử dụng tùy chọn
sort_keys=Truetrong hàmjson.dump()để sắp xếp các khóa theo thứ tự bảng chữ cái. - Ghi kết quả vào tệp bằng cách sử dụng
with open("filename.json", "w").
- Sử dụng tùy chọn
Bài Tập 5: Truy cập khóa salary trong JSON lồng nhau
-
Yêu cầu: Truy cập khóa
salarytừ JSON lồng nhau sau. -
Dữ liệu đầu vào:
sampleJson = """{ "company":{ "employee":{ "name":"emma", "payble":{ "salary":7000, "bonus":800 } } } }"""
-
Kết quả mong đợi:
7000 -
Gợi ý:
- Sử dụng
json.loads()để chuyển đổi chuỗi JSON thành từ điển Python. - Sử dụng cách tiếp cận truy cập từng khóa một trong từ điển để lấy giá trị của
salary.
- Sử dụng
Bài Tập 6: Chuyển đối tượng Vehicle thành JSON
-
Yêu cầu: Chuyển đối tượng
Vehiclesau thành định dạng JSON. -
Dữ liệu đầu vào:
class Vehicle:
def __init__(self, name, engine, price):
self.name = name
self.engine = engine
self.price = price
vehicle = Vehicle("Toyota Rav4", "2.5L", 32000)-
Kết quả mong đợi:
{ "name": "Toyota Rav4", "engine": "2.5L", "price": 32000 } -
Gợi ý:
- Tạo một lớp
VehicleEncoderkế thừa từJSONEncodervà ghi đè phương thứcdefault()để chuyển đổi đối tượng thành từ điển. - Sử dụng
json.dumps()với tùy chọnclsđể chuyển đổi đối tượngVehiclethành JSON.
- Tạo một lớp
Bài Tập 7: Chuyển JSON thành đối tượng Vehicle
-
Yêu cầu: Chuyển JSON sau thành đối tượng
Vehicle. -
Dữ liệu đầu vào:
{ "name": "Toyota Rav4", "engine": "2.5L", "price": 32000 } -
Kết quả mong đợi:
- Có thể truy cập đối tượng
Vehiclebằng toán tử chấm nhưvehicleObj.name, vehicleObj.engine, vehicleObj.price.
- Có thể truy cập đối tượng
-
Gợi ý:
- Tạo một hàm
vehicleDecoderđể giải mã JSON thành đối tượngVehicle. - Sử dụng
json.loads()với tùy chọnobject_hookđể chuyển JSON thành đối tượngVehicle.
- Tạo một hàm
Bài Tập 8: Kiểm tra xem JSON sau có hợp lệ hay không. Nếu không hợp lệ, sửa nó
-
Yêu cầu: Kiểm tra xem JSON sau có hợp lệ hay không. Nếu không hợp lệ, sửa nó.
-
Dữ liệu đầu vào:
{ "company":{ "employee":{ "name":"emma", "payble":{ "salary":7000 "bonus":800 } } } } -
Gợi ý:
- Sử dụng
json.loads()để kiểm tra tính hợp lệ của JSON. - Lỗi xảy ra do thiếu dấu
,sau"salary":7000. Thêm dấu phẩy để sửa lỗi.
- Sử dụng
Bài Tập 9: Phân tích JSON sau để lấy tất cả các giá trị của khóa name trong mảng
-
Yêu cầu: Phân tích JSON sau để lấy tất cả các giá trị của khóa
nametrong mảng. -
Dữ liệu đầu vào:
[ { "id": 1, "name": "name1", "color": ["red", "green"] }, { "id": 2, "name": "name2", "color": ["pink", "yellow"] } ] -
Kết quả mong đợi:
["name1", "name2"] -
Gợi ý:
- Sử dụng
json.loads()để chuyển đổi chuỗi JSON thành danh sách Python. - Duyệt qua danh sách để lấy giá trị của khóa
name.
- Sử dụng