Tuần tự hóa trong json python là gì?

Điều này sẽ làm việc tuyệt vời nói chung. Có một số trường hợp ngoại lệ, e. g. nếu những điều đặc biệt xảy ra trong __new__, hoặc nhiều phép thuật siêu cấp hơn đang diễn ra

Rõ ràng tải cũng hoạt động [nếu không thì vấn đề là gì]

from json_tricks import loads
json_str = loads[json_str]

Điều này giả định rằng module_name.test_class.MyTestCls có thể được nhập và không bị thay đổi theo những cách không tương thích. Bạn sẽ lấy lại một phiên bản, không phải một số từ điển hay thứ gì đó, và nó phải là một bản sao giống hệt với bản bạn đã hủy

Nếu bạn muốn tùy chỉnh cách thứ gì đó được [khử] tuần tự hóa, bạn có thể thêm các phương thức đặc biệt vào lớp của mình, như vậy

class CustomEncodeCls:
        def __init__[self]:
                self.relevant = 42
                self.irrelevant = 37

        def __json_encode__[self]:
                # should return primitive, serializable types like dict, list, int, string, float...
                return {'relevant': self.relevant}

        def __json_decode__[self, **attrs]:
                # should initialize all properties; note that __init__ is not called implicitly
                self.relevant = attrs['relevant']
                self.irrelevant = 12

chỉ tuần tự hóa một phần của các tham số thuộc tính, làm ví dụ

Và như một phần thưởng miễn phí, bạn nhận được [khử] tuần tự hóa các mảng khó hiểu, ngày & giờ, bản đồ được sắp xếp, cũng như khả năng đưa nhận xét vào json

JSON [Ký hiệu đối tượng JavaScript] là một định dạng văn bản không phụ thuộc vào ngôn ngữ và thường được sử dụng để trao đổi dữ liệu giữa các ứng dụng khác nhau. Một ví dụ điển hình là các phản hồi từ API thường ở định dạng JSON, do đó backend và frontend có thể tự do trao đổi dữ liệu mà không cần biết chi tiết kỹ thuật của nhau. Trong bài đăng này, chúng tôi sẽ giới thiệu các trường hợp sử dụng phổ biến của JSON trong Python, một ngôn ngữ phổ biến để phát triển phụ trợ và kỹ thuật/phân tích dữ liệu

JSON và từ điển

Đầu tiên, chúng ta nên biết rằng JSON là một định dạng chuỗi. Do đó, nó khác với kiểu dữ liệu từ điển trong Python. Chuỗi JSON có thể được phân tích thành dữ liệu tương ứng trong bất kỳ ngôn ngữ lập trình hiện đại nào. Thông thường, một chuỗi JSON có thể được phân tích thành hai loại dữ liệu là đối tượng và mảng. Một đối tượng là một tập hợp các cặp khóa/giá trị không có thứ tự và tương ứng với kiểu dữ liệu từ điển trong Python, trong khi một mảng là một tập hợp các giá trị có thứ tự và tương ứng với kiểu dữ liệu danh sách trong Python

Chuyển đổi giữa chuỗi JSON và dữ liệu

Như đã đề cập ở trên, một chuỗi JSON có thể được phân tích thành một đối tượng hoặc một mảng và ngược lại, trong tất cả các ngôn ngữ lập trình hiện đại. Trong Python, thư viện json có thể được sử dụng cho loại chuyển đổi này. Chúng tôi sử dụng hàm loads để chuyển đổi chuỗi JSON thành một đối tượng hoặc một mảng và sử dụng hàm dumps để thực hiện chuyển đổi ngược lại. Lưu ý rằng s trong loadsdumps là viết tắt của chuỗi có nghĩa là chúng hoạt động trên chuỗi JSON. Nếu s không được chỉ định, thì các hàm sẽ hoạt động với các tệp JSON, sẽ được giới thiệu sau

Đoạn mã dưới đây minh họa các chuyển đổi phổ biến giữa chuỗi JSON và đối tượng/mảng

Thật thú vị, khi chúng tôi kết xuất mảng trở lại JSON, kết quả sẽ khác với kết quả ban đầu. Nếu bạn kiểm tra kỹ, bạn sẽ thấy một sự khác biệt tinh tế. Khi chúng tôi không chỉ định dấu phân cách, khoảng trắng sẽ được thêm vào sau dấu phân cách mục theo mặc định là dấu phẩy. Chúng tôi có thể chỉ định một dấu phân cách tùy chỉnh để làm cho kết quả giống nhau. Lưu ý rằng chúng tôi cần chỉ định cả dấu tách mục và dấu tách khóa ngay cả khi chúng tôi chỉ muốn thay đổi một trong số chúng

Trên thực tế, tham số

class CustomEncodeCls:
        def __init__[self]:
                self.relevant = 42
                self.irrelevant = 37

        def __json_encode__[self]:
                # should return primitive, serializable types like dict, list, int, string, float...
                return {'relevant': self.relevant}

        def __json_decode__[self, **attrs]:
                # should initialize all properties; note that __init__ is not called implicitly
                self.relevant = attrs['relevant']
                self.irrelevant = 12
1 được sử dụng phổ biến hơn để tùy chỉnh biểu diễn của đối tượng JSON. Chúng ta có thể sử dụng các dấu tách khác nhau để làm cho chuỗi kết xuất trở nên nhỏ gọn hơn hoặc dễ đọc hơn với con người

Tham số

class CustomEncodeCls:
        def __init__[self]:
                self.relevant = 42
                self.irrelevant = 37

        def __json_encode__[self]:
                # should return primitive, serializable types like dict, list, int, string, float...
                return {'relevant': self.relevant}

        def __json_decode__[self, **attrs]:
                # should initialize all properties; note that __init__ is not called implicitly
                self.relevant = attrs['relevant']
                self.irrelevant = 12
2 được sử dụng để chèn một số khoảng trắng trước mỗi phím để cải thiện khả năng đọc. Và tham số
class CustomEncodeCls:
        def __init__[self]:
                self.relevant = 42
                self.irrelevant = 37

        def __json_encode__[self]:
                # should return primitive, serializable types like dict, list, int, string, float...
                return {'relevant': self.relevant}

        def __json_decode__[self, **attrs]:
                # should initialize all properties; note that __init__ is not called implicitly
                self.relevant = attrs['relevant']
                self.irrelevant = 12
3 được sử dụng để sắp xếp các khóa theo thứ tự bảng chữ cái

Thêm bộ tuần tự hóa tùy chỉnh cho các giá trị không thể được sắp xếp theo thứ tự

Trong ví dụ trên, tất cả các giá trị của từ điển đích [loads0] có thể được đánh số thứ tự. Trong thực tế, có thể có một số giá trị không thể đánh số thứ tự, đặc biệt là các loại loads1 và loads2/loads3

Trong trường hợp này, chúng ta cần tạo một chức năng nối tiếp tùy chỉnh và đặt nó thành tham số loads4

Lưu ý rằng trong bộ nối tiếp tùy chỉnh, chúng tôi sử dụng loads5 trong chuỗi f để hiển thị biểu diễn giá trị, có thể hữu ích cho mục đích gỡ lỗi. Nếu bạn bỏ ghi chú một trong các điều kiện của loads6 và chạy lại lệnh loads7, bạn sẽ thấy lỗi tương ứng

So sánh sự khác biệt giữa hai JSON

Đôi khi chúng ta cần so sánh sự khác biệt giữa hai đối tượng JSON. Ví dụ: chúng tôi có thể kiểm tra và so sánh lược đồ của một số bảng có thể được xuất dưới dạng JSON và đưa ra một số cảnh báo nếu lược đồ của một số bảng quan trọng bị thay đổi

Thư viện loads8 có thể được sử dụng để so sánh sự khác biệt giữa hai đối tượng JSON trong Python

Nếu chúng tôi muốn kiểm soát cách hiển thị kết quả, chúng tôi có thể sử dụng các tham số loads9, dumps0 và dumps1 để tùy chỉnh kết quả

Chúng ta có thể sử dụng trường loads9 để chỉ định cách hiển thị các giá trị và hành động

Chúng ta có thể sử dụng tham số dumps3 để tải dữ liệu từ các chuỗi JSON và tương tự sử dụng tham số dumps1 để kết xuất kết quả thành một chuỗi JSON, có thể được ghi trực tiếp vào một tệp, sẽ sớm được giới thiệu

Đọc và viết JSON

Chúng ta có thể viết một chuỗi JSON vào một tệp bằng hàm dumps5. Lưu ý rằng không có s trong tên hàm. Cái có s [_______57] là để làm việc với chuỗi, không phải tệp. Tệp JSON chỉ là một tệp văn bản thuần túy và phần mở rộng theo mặc định là dumps9. Hãy viết sự khác biệt giữa hai lược đồ được trả về bởi s0 vào một tệp có tên s1

Một tệp có tên s1 sẽ được tạo và sẽ chứa chuỗi JSON chứa trong biến s3. Nếu các giá trị của từ điển/danh sách chứa dữ liệu không thể tuần tự hóa, chúng ta cần chỉ định tham số loads4 với chức năng tuần tự hóa như được trình bày ở đầu bài đăng này

Cuối cùng, chúng ta có thể sử dụng hàm s5 để tải dữ liệu từ tệp JSON

Trong bài đăng này, những điều cơ bản về JSON và cách sử dụng nó trong Python được giới thiệu với các ví dụ đơn giản. Chúng ta đã học cách đọc và viết các đối tượng JSON, từ một chuỗi hoặc từ một tệp. Ngoài ra, bây giờ chúng ta đã biết cách viết một trình tuần tự hóa tùy chỉnh cho các đối tượng JSON chứa dữ liệu không thể được tuần tự hóa bởi trình tuần tự hóa mặc định. Cuối cùng, chúng ta có thể sử dụng thư viện s0 để so sánh sự khác biệt giữa hai đối tượng JSON, điều này có thể hữu ích cho việc theo dõi dữ liệu

Tuần tự hóa trong JSON là gì?

Không gian tên JSON cung cấp chức năng tuần tự hóa và giải tuần tự hóa từ Ký hiệu đối tượng JavaScript [JSON]. Tuần tự hóa là quá trình chuyển đổi trạng thái của một đối tượng, nghĩa là các giá trị thuộc tính của nó, thành một dạng có thể được lưu trữ hoặc truyền tải .

Tuần tự hóa trong Python là gì?

Tuần tự hóa đề cập đến quá trình chuyển đổi một đối tượng dữ liệu [e. g. , đối tượng Python, mô hình Tensorflow] thành định dạng cho phép chúng tôi lưu trữ hoặc truyền dữ liệu, sau đó tạo lại đối tượng khi cần bằng cách sử dụng quy trình khử lưu huỳnh ngược

Tuần tự hóa và giải tuần tự hóa JSON Python là gì?

Là định dạng mã hóa dữ liệu ở định dạng chuỗi. JSON là ngôn ngữ độc lập và do đó, nó được sử dụng để lưu trữ hoặc truyền dữ liệu trong tệp. Việc chuyển đổi dữ liệu từ chuỗi đối tượng JSON được gọi là Tuần tự hóa và đối tượng JSON chuỗi ngược lại của nó được gọi là Giải tuần tự hóa .

Những đối tượng nào là Python có thể tuần tự hóa JSON?

Bộ mã hóa JSON được triển khai trong các phương thức dump[] và dumps[] chỉ có thể tuần tự hóa một số loại đối tượng cơ bản. Đó là từ điển, danh sách, chuỗi, số nguyên, số float, Boolean và Không có . Các đối tượng phức tạp như fast_car1 cần được tuần tự hóa tùy chỉnh thành định dạng JSON bằng cách xây dựng bộ mã hóa tùy chỉnh trong Python.

Chủ Đề