Trước khi đi sâu vào mô-đun Python JSON, hãy hiểu JSON là gì. JSON (JavaScript Object Notation) là một định dạng tiêu chuẩn cho phép

Bạn đang xem: json mô-đun python 3

Trước khi đi sâu vào mô-đun Python JSON, hãy hiểu JSON là gì. JSON (JavaScript Object Notation) là một định dạng được tiêu chuẩn hóa cho phép trao đổi dữ liệu trên internet.

Vì điều này đã trở thành tiêu chuẩn cho mọi trao đổi thông tin qua internet, nó làm cho phù hợp với mọi ứng dụng Python để gửi và nhận dữ liệu bằng định dạng này.

Mô-đun json tích hợp sẵn của Python là giao diện chuyển đổi các đối tượng Python thành các đối tượng JSON.

< p class = "_ ap_apex_ad" id = "af47fad2-c8fd-4aa1-9acb-0492738779a5">

Trong hướng dẫn này, chúng ta hãy xem xét một số phương thức được sử dụng phổ biến nhất trong mô-đun json.

Định dạng của đối tượng JSON

Trước khi đi vào chi tiết mô-đun, hãy hiểu đối tượng JSON bao gồm những gì.

Điều này thực sự rất giống với từ điển Python, nơi bạn có một tập hợp các cặp {Key: value} . Sự khác biệt nhỏ duy nhất là đối tượng JSON có dấu ngoặc nhọn mở và đóng.

Dưới đây là ví dụ đơn giản về đối tượng JSON

 {
    "name": "John",
    "tuổi": 42,
    "kết hôn": Đúng,
    "bằng cấp": ["Bằng tốt nghiệp Trung học", "Bằng cử nhân"]
}

Đối tượng JSON có thể bao gồm nhiều thuộc tính khác nhau, bao gồm chuỗi, số nguyên hoặc thậm chí là danh sách.

Bây giờ chúng ta đã biết đối tượng JSON được làm bằng gì, hãy xem Python phương thức của mô-đun json .

Nhập mô-đun Python json

Python đã có sẵn mô-đun json nên không cần cài đặt bằng pip.

Để nhập mô-đun này, chỉ cần nhập

 nhập json

json.dumps () – Xây dựng một đối tượng JSON

Chúng ta có thể mã hóa một đối tượng Python thành một đối tượng JSON bằng phương thức json.dumps () .

Bạn có thể coi dumps () giống như việc tuần tự hóa đối tượng Python thành một đối tượng Python JSON và trả về một chuỗi. Điều này là cần thiết nếu bạn muốn truyền dữ liệu qua internet.

Dữ liệu được mã hóa được đề cập trong bảng bên dưới, dành cho các đối tượng Python khác nhau.

Đối tượng PythonJSON dict list , tuple array str chuỗi int , float , int – & amp; float -derived Enumsnumber True true False false Không null

Điều này nhận bất kỳ đối tượng Python nào có thể được tuần tự hóa dưới dạng đối số và trả về một chuỗi.

Định dạng:

 json_object = json.dumps (serializable_object)

Ở đây, serializable_object là một đối tượng Python, chẳng hạn như danh sách, chuỗi, v.v., có thể được tuần tự hóa. Nó không thể là một hàm / lambda, v.v.

 import json

python_object = ['Xin chào', 'từ', 'AskPython', 42]

json_object = json.dumps (python_object)

print (type (json_object), json_object)

Đầu ra

 & lt; class 'str' & gt; ["Xin chào", "từ", "AskPython", 42]

Phương thức này sẽ tạo ra TypeError nếu đối tượng không thể tuần tự hóa.

 & gt; & gt; & gt; nhập json
& gt; & gt; & gt; a = lambda x: x * 2
& gt; & gt; & gt; a (2)
4
& gt; & gt; & gt; json.dumps (a)
Traceback (cuộc gọi gần đây nhất cuối cùng):
    nâng TypeError (f'Object thuộc loại {o .__ class __.__ name__}
TypeError: Đối tượng của hàm type không thể tuần tự hóa JSON

Sắp xếp các khóa của một số

Nếu chúng tôi đang chuyển từ điển Python vào json.dumps () , chúng ta có thể chỉ định một tham số khác sort_keys , sẽ làm cho đối tượng json Python có các khóa được sắp xếp.

 nhập json

dict_obj = {1: "một", 20: "hai mươi", 5: "năm"}

json_obj = json.dumps (dict_obj, sort_keys = True)

print (json_obj)

Đầu ra

 {"1": "một", "5": "năm", "20": "hai mươi"}

Đầu ra của chúng tôi thực sự có các khóa được sắp xếp.

Xem Thêm  Top 6 những bài toán khó nhất thế giới - giả thuyết goldbach

LƯU Ý : các số được chuyển đổi thành chuỗi vì nó được mã hóa thành JSON. Nó sẽ được deserialized đúng cách trở lại thành số nguyên bằng cách sử dụng các phương pháp thích hợp.

Các đối tượng JSON trong Python cho phép in ấn đẹp

Chúng ta có thể sử dụng tham số indent của json .dumps () để chỉ định mức thụt lề. Thông thường, indent = 4 sẽ làm cho đầu ra trông thực sự tốt.

< pre class = "brush: python; title:; notranslate" title = ""> nhập json

dict_obj = {1: “một”, 20: “hai mươi”, 5: “năm”}

json_obj = json.dumps (dict_obj, sort_keys = True, thụt lề = 4)

print (json_obj)

Đầu ra

 {
    "1 một",
    "5": "năm",
    "20": "hai mươi"
}

json.dump () – Kết xuất vào một tệp

Chúng tôi cũng có thể kết xuất một đối tượng vào một tệp, nếu bạn muốn sử dụng nó sau này, sử dụng phương pháp khác json. dump () .

Định dạng :

 json.dump (data, file_object)

Phương thức json.dump () nhận dữ liệu và ghi nó vào một đối tượng tệp.

Vì vậy, bạn có thể mở một tệp mới và ghi vào đó đối tượng tệp sử dụng json.dump ()

 nhập json

python_object = ['Xin chào', 'từ', 'AskPython', 42]

với open ("sample.json", "w") là wf:
    json.dump (python_object, wf)

Đầu ra

Như bạn có thể thấy, đối tượng Python thực sự đã được kết xuất vào tệp.

Bây giờ, hãy lấy JSON đó đối tượng mà chúng tôi đã hiển thị trong ví dụ đầu tiên và lưu trữ nó vào một tệp.

 import json

json_object = {
    "name": "John",
    "tuổi": 42,
    "kết hôn": Đúng,
    "bằng cấp": ["Bằng tốt nghiệp Trung học", "Bằng cử nhân"]
}

với open ("sample.json", "w") là wf:
    json.dump (json_object, wf)

Đầu ra

Hủy chuẩn hóa các đối tượng JSON

Tương tự như mã hóa một đối tượng Python thành một đối tượng JSON, chúng ta cũng có thể làm ngược lại, bằng cách chuyển đổi một đối tượng JSON thành một đối tượng Python. Đây được gọi là deserialization .

Chúng tôi có thể thực hiện việc này bằng cách sử dụng các phương thức json.loads () json.load () , tương tự như json.dumps () json.dump () .

json.loads ()

Điều này chuyển đổi một đối tượng json được mã hóa bằng json.dumps () trở lại thành một đối tượng Python. < / p>

 nhập json

python_object = ['Xin chào', 'từ', 'AskPython', 42]

encoded_object = json.dumps (python_object)

decoded_object = json.loads (encoded_object)

print (type (decoded_object), decoded_object)

Đầu ra

 & lt; class 'list' & gt; ['Xin chào', 'từ', 'AskPython', 42]

Chúng tôi đã lấy lại thành công đối tượng danh sách cũ của mình!

json.load () – Hủy thiết lập từ một tệp

Thao tác này thực hiện thao tác ngược lại của json.dump () , bằng cách chuyển đổi đối tượng json trở lại từ một tệp, thành một đối tượng Python.

Xem Thêm  Toán tử logic - javascript hoặc và toán tử

Hãy lấy tệp sample.json của chúng tôi và lấy lại dữ liệu bằng phương pháp này.

 nhập json

với open ("sample.json", "r") là rf:
    decoded_data = json.load (rf)

in (dữ liệu được giải mã)

Đầu ra

 {'name': 'John', 'age' : 42, 'đã kết hôn': Đúng, 'bằng cấp': ['Bằng tốt nghiệp Trung học', 'Bằng cử nhân']}

Thật vậy, chúng tôi đã lấy lại đối tượng JSON cũ của mình, đối tượng mà chúng tôi đã lưu trữ trong tệp!

Bây giờ chúng tôi đã đề cập đến các phương thức được sử dụng phổ biến nhất của mô-đun này, hãy bắt đầu sang bước tiếp theo: Tạo Bộ mã hóa JSON của riêng chúng tôi!

Tạo Bộ mã hóa JSON của riêng chúng tôi

Mô-đun json sử dụng bộ mã hóa có tên là json.JSONEncoder , sử dụng các quy tắc trong bảng ở trên để mã hóa các đối tượng Python.

Tuy nhiên, nó không mã hóa tất cả các đối tượng Python và tùy thuộc vào vấn đề chúng ta gặp phải, chúng ta có thể cần viết Bộ mã hóa JSON của riêng mình để mã hóa các đối tượng đó theo một cách đặc biệt.

Để làm được điều đó, chúng ta phải viết Lớp mã hóa tùy chỉnh của chúng tôi. Hãy gọi nó là MyEncoder . này phải mở rộng lớp json.JSONEncoder , để thêm vào các tính năng hiện có của nó.

Đối với phần trình diễn này, chúng tôi sẽ lấy các mảng không có hạt và chuyển đổi chúng thành các đối tượng JSON của Python. Giờ đây, mô-đun json theo mặc định không thể xử lý các mảng numpy, vì vậy nếu bạn cố gắng chuyển đổi một mảng numpy mà không có lớp mở rộng của chúng tôi, bạn sẽ nhận được TypeError:

 TypeError: Đối tượng kiểu ndarray không thể tuần tự hóa JSON

Hãy viết lớp này để tuần tự hóa và mã hóa một mảng numpy thành các đối tượng json, bằng cách chuyển đổi nó thành một danh sách Python, trong phương thức xử lý default () của chúng tôi.

 nhập json
nhập numpy dưới dạng np

lớp MyEncoder (json.JSONEncoder):
    # Xử lý hành vi mặc định của
    # bộ mã hóa khi nó phân tích cú pháp một đối tượng 'obj'
    def default (self, obj):
        # Nếu đối tượng là một mảng numpy
        if isinstance (obj, np.ndarray):
            # Chuyển đổi sang Danh sách Python
            trả về obj.tolist ()
        khác:
            # Để Bộ mã hóa lớp cơ sở xử lý đối tượng
            return json.JSONEncoder.default (self, obj)


# Dãy phao nổi
a = np.arange (1, 10, 0,5)
print (gõ (a), a)

# Chuyển bộ mã hóa của chúng tôi tới json.dumps ()
b = json.dumps (a, cls = MyEncoder)
in (b)

Cuối cùng, chúng tôi mã hóa nó, bằng cách chuyển tên lớp cho tham số cls của json.dumps () .

Vì vậy, lệnh gọi mã hóa sẽ là:

 json_object = json.dumps (python_object, cls = MyEncoder)

Đầu ra

 & lt; class 'numpy.ndarray' & gt; [1. 1,5 2. 2,5 3. 3,5 4. 4,5 5. 5,5 6. 6,5 7. 7,5 8. 8,5 9. 9,5]
[1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0, 8.5, 9.0, 9.5]

Thật vậy, bộ mã hóa tùy chỉnh của chúng tôi giờ đây có thể chuyển đổi các mảng phức tạp thành các đối tượng JSON! Hiện chúng tôi đã hoàn thành bộ mã hóa phức tạp đầu tiên của mình.

Xem Thêm  Chuỗi JavaScript chứa: Hướng dẫn từng bước - js nếu chuỗi chứa

Bạn có thể mở rộng chức năng này để viết các bộ mã hóa khác nhau cho trường hợp sử dụng cụ thể của mình!

Kết luận

Trong bài viết này, chúng tôi đã học cách sử dụng mô-đun json của Python để thực hiện các hoạt động khác nhau liên quan đến các đối tượng JSON.

< / p>

Tài liệu tham khảo

  • Tài liệu Python chính thức trên mô-đun JSON


Xem thêm những thông tin liên quan đến chủ đề json mô-đun python 3

Working With JSON In Python 3

  • Tác giả: Master Code Online
  • Ngày đăng: 2016-11-11
  • Đánh giá: 4 ⭐ ( 8247 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: In this Python tutorial, we will look at working with JSON in Python 3. JSON is a light-weight dataset that we can use to store and get data from in Python. We will use the json Python package in this tutorial. If you have any questions let me know.

Cách đọc JSON file sử dụng python qua ví dụ đơn giản nhất » Cafedev.vn

  • Tác giả: cafedev.vn
  • Đánh giá: 4 ⭐ ( 9102 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Dạng đầy đủ của JSON là JavaScript Object Notation. Nó có nghĩa là một tệp script (thực thi) được tạo bằng văn bản bằng ngôn ngữ lập trình

Độ bền dữ liệu Python – Mô-đun JSON

  • Tác giả: knews.vip
  • Đánh giá: 5 ⭐ ( 1075 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: JSON là viết tắt của JavaScript Object Notation. Đây là một định dạng trao đổi dữ liệu nhẹ. Nó là một định dạng văn bản đa nền tảng và độc lập với ngôn ngữ, được hỗ trợ bởi nhiều ngôn ngữ lập trình. Định dạng này được sử dụng để trao đổi dữ liệu giữa máy chủ web và…

Tìm hiểu về hoạt động của Mô-đun trong Python

  • Tác giả: t3h.edu.vn
  • Đánh giá: 3 ⭐ ( 9596 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mô đun trong Python là một tệp chứa tất cả các chức năng mà bạn muốn đưa vào ứng dụng của mình. Nếu chưa tìm hiểu về Mô đun, đừng bỏ qua bài viết này nhé!

Python JSON

  • Tác giả: www.w3schools.com
  • Đánh giá: 4 ⭐ ( 4367 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Làm việc với JSON trong Python

  • Tác giả: nguyenvanhieu.vn
  • Đánh giá: 4 ⭐ ( 2122 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài học hôm nay, chúng ta sẽ tìm hiểu về JSON trong Python. Chúng ta sẽ biết về module JSON trong Python và chuyển đổi đối tượng Python thành dữ liệu Json

Chi tiết bài học 25.Python JSON

  • Tác giả: vimentor.com
  • Đánh giá: 4 ⭐ ( 7905 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học Python JSON: Encode(dump), Decode(load) dữ liệu json & File với ví dụ

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php