Mã Python để tải dữ liệu từ một số tệp JSON phức tạp dài:
with open(filename, "r") as f:
data = json.loads(f.read())
(lưu ý: phiên bản mã tốt nhất phải là:
with open(filename, "r") as f:
data = json.load(f)
nhưng cả hai biểu hiện hành vi tương tự)
Đối với nhiều loại lỗi JSON (thiếu dấu phân cách, dấu gạch chéo ngược không chính xác trong chuỗi, v.v.), điều này sẽ in một thông báo hữu ích tốt đẹp chứa dòng và số cột nơi tìm thấy lỗi JSON.
Tuy nhiên, đối với các loại lỗi JSON khác (bao gồm cả "sử dụng dấu phẩy trên mục cuối cùng trong danh sách" cổ điển, nhưng cũng có những thứ khác như viết hoa đúng / sai), đầu ra của Python chỉ là:
Traceback (most recent call last):
File "myfile.py", line 8, in myfunction
config = json.loads(f.read())
File "c:\python27\lib\json\__init__.py", line 326, in loads
return _default_decoder.decode(s)
File "c:\python27\lib\json\decoder.py", line 360, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "c:\python27\lib\json\decoder.py", line 378, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
Đối với loại ValueError đó, làm thế nào để bạn nhận được Python để cho bạn biết lỗi trong tệp JSON ở đâu?
json.load(f)
thay vìjson.loads(f.read())