Sự khác biệt giữa json.dumps và json.load là gì? [đóng cửa]


143

Sự khác biệt giữa json.dumpsvà là json.loadgì?

Theo hiểu biết của tôi, một người tải JSON vào một từ điển và một tải khác vào các đối tượng.

Câu trả lời:


190

dumps lấy một đối tượng và tạo ra một chuỗi:

>>> a = {'foo': 3}
>>> json.dumps(a)
'{"foo": 3}'

load sẽ lấy một đối tượng giống như tệp, đọc dữ liệu từ đối tượng đó và sử dụng chuỗi đó để tạo một đối tượng:

with open('file.json') as fh:
    a = json.load(fh)

Lưu ý rằng dumploadchuyển đổi giữa các tệp và đối tượng, trong khi dumpsloadschuyển đổi giữa các chuỗi và đối tượng. Bạn có thể nghĩ về các shàm không có chức năng như các hàm bao quanh các shàm:

def dump(obj, fh):
    fh.write(dumps(obj))

def load(fh):
    return loads(fh.read())

Điều này rất hữu ích cho sự hiểu biết của tôi. Tôi vẫn hơi bối rối khi tôi nghĩ mọi thứ đều là một đối tượng trong Python. Bản thân chuỗi không phải là một đối tượng? Làm thế nào bạn có thể chuyển đổi giữa hai sau đó? Xin lỗi vì câu hỏi ngớ ngẩn.
Bowen Liu

Tôi đang sử dụng objecttheo nghĩa "một cái gì đó khác hơn str". Một chuỗi like '"foo"'được giải mã thành đối tượng Python ; một chuỗi như được giải mã vào danh sách Python , v.v.str'foo'"[1,2,3]"[1,2,3]
chepner

dumps()- mã hóa thành các đối tượng JSON dump()- viết chuỗi mã hóa trên tệp loads()- Giải mã chuỗi JSON load()- Giải mã trong khi tệp JSON đọc
Jamil Noyda

74

json tải -> trả về một đối tượng từ một chuỗi đại diện cho một đối tượng json.

json dumps -> trả về một chuỗi đại diện cho một đối tượng json từ một đối tượng.

tải và kết xuất -> đọc / ghi từ / vào tệp thay vì chuỗi


10
> json dumps -> trả về một chuỗi đại diện cho một đối tượng json từ một dict. Điều đó rất gần, nhưng nó không phải là một mệnh lệnh mà bạn truyền vào json.dumps (). Bạn có thể vượt qua một danh sách, hoặc một chuỗi, hoặc một boolean ..
Ross
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.