Sự khác biệt giữa dump và dumps() json trong python là gì?

Python có hỗ trợ tích hợp cho các tài liệu JSON, bằng mô-đun “json” của nó. Tôi cá là hầu hết chúng ta đã sử dụng nó, và một số người trong chúng ta đã sử dụng nó rất nhiều. Chúng tôi biết rằng chúng tôi có thể sử dụng phương thức

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
1 để dễ dàng chuyển đổi đối tượng từ điển Python thành chuỗi JSON. Tuy nhiên, phương pháp này không đơn giản như hầu hết các nhà phát triển nghĩ

Trong bài viết này, tôi sẽ giới thiệu phương pháp

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
1 này bằng các ví dụ. Mức độ phức tạp và hiếm của cách sử dụng là từ nông đến sâu

Bây giờ chúng ta nên bắt đầu. Không cần tải xuống bất cứ thứ gì, Python 3 của bạn. x phải đi kèm với mô-đun JSON

import json

Mục lục

1. Tự động thụt lề cho đầu ra đẹp
2. Dấu tách tùy chỉnh
3. Khóa sắp xếp
4. Bỏ qua các loại khóa không cơ bản
5. Ký tự không phải ASCII
6. Kiểm tra vòng tròn
7. Cho phép NaN [Không phải số]
8. Bộ mã hóa JSON tùy chỉnh

0. Sự khác biệt giữa "dump" và "dump"

Trong trường hợp một số người mới đang đọc bài viết này, có lẽ cần đề cập rằng có hai phương thức tương tự trong mô-đun JSON -

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
3 và
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4

Hai phương thức này có chữ ký gần như giống hệt nhau, nhưng

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
3 ghi chuỗi JSON đã chuyển đổi thành luồng [thường là tệp], trong khi
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4 chỉ chuyển đổi từ điển thành chuỗi JSON

Giả sử chúng ta có một từ điển đơn giản như sau

my_dict = {
'name': 'Chris',
'age': 33
}

Nếu chúng tôi muốn chuyển đổi nó thành một chuỗi JSON được định dạng và ghi nó vào một tệp, chúng tôi có thể sử dụng

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4

with open['my.json', 'w'] as f:
json.dump[my_dict, f]

Sau đó, nếu chúng tôi kiểm tra thư mục làm việc, tệp

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
8 sẽ ở đó cùng với chuỗi JSON đã chuyển đổi

Nếu chúng ta sử dụng

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4, nó chỉ đơn giản là chuyển từ điển thành một chuỗi

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
2

Vì hai phương thức này có cùng dấu hiệu nên bài viết này sẽ chỉ tập trung vào

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4, vì tất cả các thủ thuật này sẽ hiệu quả với phương thức còn lại

1. Tự động thụt đầu dòng cho đầu ra đẹp

Xem đầu ra chuỗi đó bằng phương thức

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4? . Nếu chúng ta có một tài liệu JSON thực sự lớn, mọi thứ sẽ được xuất ra trên một dòng duy nhất

Để xuất ra chuỗi JSON với định dạng đẹp, chúng ta có thể dễ dàng thêm tham số “thụt lề”. Nó lấy một số nguyên làm đối số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
5

2. Dấu phân cách tùy chỉnh

JSON tuân theo một định dạng khá nghiêm ngặt, ví dụ: các mục ở cùng cấp phải được phân tách bằng dấu phẩy và dấu chấm phẩy phải được sử dụng giữa khóa và giá trị của nó. Do đó, theo mặc định, dấu tách mục và dấu tách khóa sẽ là

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
22 và
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
23

Tuy nhiên, nếu chúng ta muốn xuất ra một chuỗi JSON nhỏ gọn, chúng ta có thể thay đổi các dấu phân cách này bằng tham số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
24. Chúng ta phải chuyển cả hai dấu phân cách trong một tuple

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
9

Nếu chúng tôi không phải sử dụng chuỗi JSON dưới dạng JSON, chúng tôi cũng có thể sửa đổi các dấu phân cách thành bất kỳ thứ gì chúng tôi muốn. Ví dụ ta có thể để nó thành kiểu PHP như sau

import json
0

3. Sắp xếp phím

JSON thường không quan tâm đến thứ tự của các mục. Do đó, khi chúng tôi kết xuất một từ điển Python thành một chuỗi JSON, thứ tự của các mục sẽ được giữ nguyên

import json
1

Tuy nhiên, nếu chúng tôi muốn sắp xếp chuỗi JSON đã chuyển đổi theo các khóa mục, chúng tôi có thể dễ dàng đặt tham số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
25 thành
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
26

import json
4

Chìa khóa sẽ được sắp xếp theo thứ tự bảng chữ cái

4. Bỏ qua các loại khóa không cơ bản

JSON chỉ hỗ trợ một số loại đối tượng dưới dạng khóa mục, đó là

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
27,
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
28,
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
29,
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
50 và
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
51. Các loại này được gọi là các loại cơ bản. Nếu chúng tôi cố gắng chuyển đổi một từ điển bằng loại khóa không cơ bản, một
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
52 sẽ bị ném

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
1

Điều đó hợp lý vì JSON không hỗ trợ loại bộ sưu tập dưới dạng khóa. Tuy nhiên, nếu chúng tôi muốn bỏ qua những loại không có ý nghĩa này, chúng tôi có thể đặt

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
53 thành true để loại bỏ các mục này

my_dict = {
'name': 'Chris',
'age': 33
}
0

5. Ký tự không phải ASCII

Các ký tự không phải ASCII không thể được đảm bảo hiển thị tốt trên tất cả các nền tảng và cũng có thể gây rắc rối trong quá trình truyền chuỗi JSON. Do đó, khi chuyển chúng thành một chuỗi JSON, Python sẽ mã hóa nó như sau

my_dict = {
'name': 'Chris',
'age': 33
}
1

Tuy nhiên, nếu chúng ta không muốn mã hóa các ký tự đặc biệt này, chúng ta có thể đặt

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
54 thành false

my_dict = {
'name': 'Chris',
'age': 33
}
2

6. kiểm tra thông tư

Trong Python, có thể định nghĩa một từ điển với tham chiếu vòng tròn. Ví dụ: hãy xác định một từ điển có khóa được gọi là “dictionary” và giá trị hiện tại là

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
51

my_dict = {
'name': 'Chris',
'age': 33
}
3

Sau đó, hãy gán chính từ điển đó làm giá trị của khóa “dictionary”

my_dict = {
'name': 'Chris',
'age': 33
}
4

Bây giờ, nếu chúng ta thử xuất từ ​​điển này, Python sẽ hiển thị

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
56 vì có một tham chiếu vòng

Nếu chúng tôi cố gắng kết xuất chuỗi JSON từ một từ điển như vậy, thì tham chiếu vòng tròn sẽ được phát hiện và gây ra lỗi

Tuy nhiên, nếu chúng tôi không muốn phát hiện tham chiếu vòng tròn và chỉ để nó đi, chúng tôi có thể đặt tham số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
57 thành false

my_dict = {
'name': 'Chris',
'age': 33
}
5

Sự khác biệt duy nhất là cái sau sẽ thực sự cố gắng kết xuất cấp độ từ điển được tham chiếu vòng tròn theo cấp độ cho đến khi nó bị tràn. Có lẽ không có lợi ích để làm như vậy. Ngay cả khi bạn muốn sử dụng tính năng này để đạt được điều gì đó khác [mà tôi không thể tìm thấy ví dụ nào…], thì phải có cách tốt hơn cách này

7. Cho phép NaN [Không phải là số]

Mặc định khi convert từ điển có số không hợp lệ như

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
58,
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
59,
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
90 thì nó sẽ để nguyên

my_dict = {
'name': 'Chris',
'age': 33
}
6

Điều này sẽ gây ra một số vấn đề sau này nếu chúng ta cố gắng sử dụng “chuỗi JSON” cho các mục đích khác vì nó không còn là một chuỗi JSON hợp lệ nữa.

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
91 không phải là loại giá trị JSON hợp lệ

Nếu chúng tôi muốn tránh điều này hoặc ít nhất là để vấn đề bộc lộ sớm hơn, chúng tôi có thể đặt tham số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
92 thành false. Khi có NaN, một lỗi sẽ được đưa ra

my_dict = {
'name': 'Chris',
'age': 33
}
7

8. Bộ mã hóa JSON tùy chỉnh

Cuối cùng nhưng không kém phần quan trọng, chúng ta hãy xem cách tùy chỉnh bộ mã hóa JSON. Thay vì để mọi thứ ở chế độ mặc định, chúng ta có thể điều chỉnh hành vi của phương thức JSON

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
4 một cách dễ dàng

Ví dụ, chúng ta có một từ điển như sau. Nó có một đối tượng datetime làm giá trị trong một mục

my_dict = {
'name': 'Chris',
'age': 33
}
8

Trong trường hợp này, nếu chúng ta cố gắng kết xuất từ ​​điển thành JSON, Lỗi Loại sẽ xuất hiện

Điều gì sẽ xảy ra nếu chúng ta muốn phân tích các đối tượng datetime khi kết xuất từ ​​điển?

my_dict = {
'name': 'Chris',
'age': 33
}
9

Trong đoạn mã trên, chúng tôi kiểm tra xem đối tượng có phải là đối tượng ngày giờ không. Nếu vậy, chúng tôi chuyển đổi ngày giờ thành một chuỗi và sau đó trả về nó. Nếu không, chỉ cần sử dụng phương pháp

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
96

Khi chúng tôi có lớp bộ mã hóa tùy chỉnh này, chúng tôi có thể chuyển nó tới tham số

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
97 trong phương thức
with open['my.json', 'w'] as f:
json.dump[my_dict, f]
98. hành vi của nó sẽ được thay đổi

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
0

Tóm lược

Hình ảnh được cung cấp bởi Alexandr Podvalny từ Pixabay

Trong bài viết này, tôi chỉ giới thiệu một phương thức —

with open['my.json', 'w'] as f:
json.dump[my_dict, f]
1 trong Python. Đối với một phương thức tích hợp sẵn như phương thức này, chúng ta thường sử dụng chúng rất nhiều, nhưng có thể chúng ta không biết hết từng khía cạnh của nó. Rất nên nghiên cứu các phương pháp mà chúng ta quen thuộc hơn là tiếp tục tìm kiếm những phương pháp hiếm khi được sử dụng, bởi vì phương pháp cũ có thể sẽ mang lại cho chúng ta nhiều giá trị hơn so với thời gian chúng ta đã bỏ ra

Tham gia Medium với liên kết giới thiệu của tôi - Christopher Tao

Là thành viên Phương tiện, một phần phí thành viên của bạn sẽ được chuyển đến các tác giả mà bạn đã đọc và bạn có toàn quyền truy cập vào mọi câu chuyện…

Trung bình. com

Nếu bạn cảm thấy bài viết của tôi hữu ích, hãy cân nhắc tham gia Medium Membership để ủng hộ tôi và hàng ngàn người viết khác. [Nhấp vào liên kết ở trên]

Sự khác biệt giữa kết xuất JSON và kết xuất JSON là gì?

json. phương thức dump[] [không có “s” trong “dump”] được sử dụng để ghi đối tượng tuần tự hóa Python dưới dạng dữ liệu định dạng JSON vào một tệp. json. phương thức dumps[] mã hóa bất kỳ đối tượng Python nào thành Chuỗi có định dạng JSON

Tại sao chúng tôi sử dụng kết xuất JSON trong Python?

Phương thức dump[] được sử dụng khi các đối tượng Python phải được lưu trữ trong một tệp . Các bãi [] được sử dụng khi các đối tượng được yêu cầu ở định dạng chuỗi và được sử dụng để phân tích cú pháp, in, v.v. Kết xuất [] cần tên tệp json trong đó đầu ra phải được lưu trữ dưới dạng đối số.

Đâu là sự khác biệt giữa hàm dump[] và hàm load[] ?

loads[] nhận vào một chuỗi và trả về một đối tượng json. json. dumps[] nhận một đối tượng json và trả về một chuỗi .

Tải và kết xuất JSON trong Python là gì?

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. kết xuất json -> 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ừ/tệp thay vì chuỗi.

Chủ Đề