Hướng dẫn python serialize object to json - python tuần tự hóa đối tượng thành json

Overview:

  • JSON là một chữ viết tắt của ký hiệu đối tượng JavaScript.
  • Mặc dù tên có "JavaScript" trên đó, JSON là định dạng trao đổi dữ liệu độc lập ngôn ngữ.
  • JSON là một định dạng trao đổi dữ liệu dựa trên văn bản.
  • Bất kỳ đối tượng Python nào cũng có thể được tuần tự hóa thành định dạng JSON và ngược lại.
  • Tất cả các ngôn ngữ lập trình phổ biến hỗ trợ chuyển đổi các đối tượng thành JSON và ngược lại.
  • Không liên quan đến bất kỳ đối tượng nào, các chuỗi JSON có thể được hình thành và hoán đổi giữa hai quy trình, máy khách và máy chủ dưới dạng dữ liệu.
  • Một số API REST và dịch vụ web trả về dữ liệu dưới dạng JSON. Ngay cả các thông báo lỗi từ các API còn lại cũng được trả về dưới dạng chuỗi JSON.

Cấu trúc của chuỗi JSON:

  • Cấu trúc JSON rất đơn giản.
  • Một khung vuông bên trái bắt đầu một mảng và một khung vuông bên phải kết thúc một mảng.
  • Nẹp xoăn bên trái bắt đầu một vật thể và nẹp xoăn bên phải kết thúc đối tượng.
  • Một đại tràng tách một tên và giá trị và dấu phẩy tách cặp giá trị tên.
  • Một giá trị trong chuỗi JSON có thể là một đối tượng được biểu thị dưới dạng chuỗi JSON, một mảng được biểu thị dưới dạng chuỗi JSON, một số hoặc chuỗi.
  • Giá trị JSON cũng có thể là bất kỳ hằng số nào sau đây: Đúng, Sai và Null.

Mã hóa các đối tượng Python trong JSON:

Hướng dẫn python serialize object to json - python tuần tự hóa đối tượng thành json

  • Mô -đun Python JSON chuyển đổi một đối tượng Python Dict thành các đối tượng JSON, trong khi danh sách và tuple được chuyển đổi thành mảng JSON.
  • Một STR Python được chuyển đổi thành chuỗi JSON.
  • Số nguyên và số điểm nổi được chuyển đổi thành số JSON.
  • Giá trị boolean true được chuyển đổi thành JSON không đổi đúng.
  • Giá trị Boolean Sai được chuyển đổi thành JSON không đổi sai.
  • Không có, đại diện cho một null trong python, được chuyển đổi thành null hằng số json.

Tuần tự hóa bất kỳ đối tượng Python nào vào chuỗi JSON:

Hướng dẫn python serialize object to json - python tuần tự hóa đối tượng thành json

  • Nếu bất kỳ loại đối tượng nào khác của python ngoài các loại được liệt kê ở trên cần phải được tuần tự hóa thành định dạng JSON thì phải được phân lớp JSON.jsonencoder và phương thức mặc định () cần phải được ghi đè.
  • Phải cẩn thận để gọi phiên bản lớp cơ sở của phương thức mặc định () để tăng một ngoại lệ khi các đối tượng không được hỗ trợ được truyền vào.
  • JsonEncoder lớp con có thể được khởi tạo và phương thức mã hóa () có thể được gọi để lấy chuỗi JSON.
  • Thay vì lớp phụ, jsonencoder, một phương pháp tuần tự hóa có thể được xác định.
  • Tên phương thức có thể được truyền làm giá trị cho đối số từ khóa Mặc định cho các chức năng kết xuất và kết xuất.
  • Trong cả hai cách được mô tả ở trên phương thức tuần tự hóa có thể trả về từ điển, & nbsp; danh sách, mảng, str, int hoặc float. Phương thức vars (), là một trong những phương thức tích hợp python và __dict __ & nbsp; Thuộc tính của đối tượng là một số tiện ích có thể được sử dụng trong việc thực hiện phương pháp tuần tự hóa.

Ví dụ1: Chuyển đổi các đối tượng Python đơn giản thành chuỗi JSON

Nhập JSON

# Một từ điển của số cuộn so với tên sinh viên

StudentDict = {1: "John Napier",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2: "Leonhard Euler",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 3: "Scarlett O'Hara",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 4: "Henry Ford"}

JSonstring & nbsp; = json.dumps (StudentDict)

# Một từ điển Python dưới dạng chuỗi JSON

print(jsonString)

# Một danh sách là json

RepDigits = [11,22,33,44]

JSonstring & nbsp; = json.dumps (Repdigits)

# Danh sách Python dưới dạng chuỗi JSON

print(jsonString)

# In không dưới dạng json

Tham chiếu1 = Không có

JSonstring & nbsp; = json.dumps (tham chiếu1)

print(jsonString)

# In đúng dưới dạng json

còn sống = true

JSonstring & nbsp; = json.dumps (còn sống)

print(jsonString)

Output:

{"1": "John Napier", "2": "LeonHard Euler", "3": "Scarlett O'Hara", "4": "Henry Ford"}

[11, 22, 33, 44]

null

true

Ví dụ2: Chuyển đổi các đối tượng Python Custome thành chuỗi JSON bằng cách xuất phát từ json.jsonencoder

# Chương trình Python mẫu để tuần tự hóa một thể hiện của lớp Python tùy chỉnh dưới dạng chuỗi JSON

từ JSON Nhập JsonEncoder

Nhập JSON

# Một từ điển của số cuộn so với tên sinh viên

StudentDict = {1: "John Napier",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2: "Leonhard Euler",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 3: "Scarlett O'Hara",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 4: "Henry Ford"}

JSonstring & nbsp; = json.dumps (StudentDict)

# Một từ điển Python dưới dạng chuỗi JSON

# Một danh sách là json

RepDigits = [11,22,33,44]

JSonstring & nbsp; = json.dumps (Repdigits)

# Danh sách Python dưới dạng chuỗi JSON

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2: "Leonhard Euler",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 3: "Scarlett O'Hara",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 2: "Leonhard Euler",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 3: "Scarlett O'Hara",

# Đối tượng là JSON

lớp MobilePhoneencoder (JsonEncoder):

& nbsp; & nbsp; & nbsp; def mặc định (tự, đối tượng):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Nếu isinstance (đối tượng, mobilephone):

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Trả về đối tượng .__ Dict__

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; khác:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Gọi thực hiện lớp cơ sở chăm sóc

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Tăng các ngoại lệ cho các loại không được hỗ trợ

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; trả về json.jsonencoder.default (self, object)

# Tạo một đối tượng điện thoại di động & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Liên hệ = {"xxx-xxx-xxxx": "Joe",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Zzz-zzz-zzzz": "ane",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "AAA-AAA-AAAA": "Rod",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; }

Ứng dụng & nbsp; & nbsp; & nbsp; & nbsp; = ["Facebook",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "LinkedIn",

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Twitter"]

mymobile & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; = MobilePhone (Danh bạ, Ứng dụng)

# Sử dụng MobilePhoneencoder để giải mã một đối tượng MobilePhone

JSonstring & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; = MobilePhoneEncoder (). Mã hóa (MyMobile)

print(jsonString)

# Giải mã một loại không được hỗ trợ thành JSON

JSonstring1 & nbsp; & nbsp; & nbsp; & nbsp; = MobilePhoneencoder (). Encode (class_no_jsonserialization ())

# Sẽ tăng một ngoại lệ

print(jsonString1)

Output:

{"liên hệ": {"xxx-xxx-xxxx": "joe", "yyy-yyy-yyyy": "joe", "zzz-z "Rod"}, "Ứng dụng": ["Facebook", "LinkedIn", "Twitter"]}

Traceback (cuộc gọi gần đây nhất cuối cùng):

& nbsp; Tệp "JsOnex1.py", dòng 51, trong

& nbsp; & nbsp; & nbsp; JSonstring1 & nbsp; & nbsp; & nbsp; & nbsp; = MobilePhoneencoder (). Encode (class_no_jsonserialization ())

& nbsp; Tệp "/l Library

& nbsp; & nbsp; & nbsp; Chunks = self.iterencode (o, _one_shot = true)

& nbsp; Tệp "/l Library

& nbsp; & nbsp; & nbsp; Trả về _IterenCode (O, 0)

& nbsp; Tệp "JsOnex1.py", dòng 32, mặc định

& nbsp; & nbsp; & nbsp; trả về json.jsonencoder.default (self, object)

& nbsp; Tệp "/l Library

& nbsp; & nbsp; & nbsp; O .__ Lớp __.__ Tên__)

TypeError: đối tượng của loại 'class_no_jsonsonserialization' không phải là serializable json

Làm thế nào để bạn tuần tự hóa một đối tượng trong Python?

Sử dụng thư viện Pickle của Python sau đó, để tuần tự hóa một đối tượng Python như từ điển và lưu trữ luồng byte làm tệp, chúng ta có thể sử dụng phương thức Dump () của Pickle. test_dict = {"xin chào": "thế giới!"} luồng byte đại diện cho test_dict hiện được lưu trữ trong tệp thử nghiệm. Pickle ”!use pickle's dump() method. test_dict = {"Hello": "World!"} The byte stream representing test_dict is now stored in the file “ test. pickle ”!

Làm thế nào để bạn tuần tự hóa và giải phóng một đối tượng JSON trong Python?

Để tuần tự hóa và giải phóng các đối tượng JSON Python, __dict__.Có __dict__ trên bất kỳ đối tượng Python nào, là một từ điển được sử dụng để lưu trữ các thuộc tính (có thể ghi) của một đối tượng.Chúng tôi có thể sử dụng điều đó để làm việc với JSON, và điều đó hoạt động tốt.Python “__dict__” can be used. There is the __dict__ on any Python object, which is a dictionary used to store an object's (writable) attributes. We can use that for working with JSON, and that works well.

Làm cách nào để lưu một đối tượng Python cho JSON?

Để đổ một đối tượng Python vào Chuỗi JSON, bạn có thể sử dụng phương thức json.dumps () của mô-đun JSON tích hợp.JSON.Dump () Phương thức được ghép nối (không có "S") chuyển đổi đối tượng Python thành chuỗi JSON và ghi nó vào một tệp.use the json. dumps() method of the built-in json module. The json. dump() paired method (without the "s") converts the Python object to JSON string and writes it to a file.

Python sê -ri JSON là gì?

Xét nghiệm hóa là quá trình chuyển đổi các đối tượng của các loại dữ liệu phức tạp (các lớp được xác định tùy chỉnh, người lập bản đồ liên quan đến đối tượng, DateTime, v.v.) thành các loại dữ liệu gốc để sau đó chúng có thể dễ dàng chuyển đổi thành ký hiệu JSON.