Các đối tượng Python có thể được chuyển đổi thành JSON không?

Tôi cần biết cách chuyển đổi một đối tượng python động thành JSON. Đối tượng phải có thể có nhiều cấp đối tượng đối tượng đối tượng con. Ví dụ

class C(): pass
class D(): pass

c = C()
c.dynProperty1 = "something"
c.dynProperty2 = { 1, 3, 5, 7, 9 }
c.d = D()
c.d.dynProperty3 = "d.something"

# .. convert c to json ...

Sử dụng trăn 2. 6 mã sau

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)

mang lại lỗi sau

TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable

Tôi không biết loại đối tượng con nào mà người dùng có thể đưa vào

{"id": 1, "age": 25, "name": "John"}
7. Có giải pháp nào đủ thông minh để phát hiện xem một thuộc tính có phải là một đối tượng hay không và tự động phân tích cú pháp của nó là
{"id": 1, "age": 25, "name": "John"}
8?

Nếu bạn muốn chuyển đổi sang đối tượng JSON của một lớp không phải là một phần của các kiểu dựng sẵn trong Python, bạn có thể gặp lỗi

TypeError với "không thể tuần tự hóa JSON"

Trong trường hợp này, bạn có một số tùy chọn

bạn cũng có thể kiểm tra

  • Python Json để đọc chính tả
  • Cookie ví dụ dưa chua Python

Python chuyển đổi đối tượng lớp thành json (không tích hợp)

Cách dễ nhất để khắc phục lỗi là chỉ cần thêm

{"id": 1, "age": 25, "name": "John"}
8 vào phương thức kết xuất

import json

class Person(object):
    def __init__(self):
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

s = json.dumps(person.__dict__) 
print(s)

kết quả

{"id": 1, "age": 25, "name": "John"}
  • nhập mô-đun JSON
  • khai báo một lớp Người mới
  • tạo một thể hiện mới của lớp này
  • bán phá giá đối tượng với tùy chọn.
    {"id": 1, "age": 25, "name": "John"}
    
    8 - nếu không sẽ có lỗi

Python chuyển đổi đối tượng thành chuỗi JSON (có xác thực)

Phương thức tuần tự hóa JSON của các đối tượng không thể tuần tự hóa theo phương thức kết xuất mặc định. Ưu điểm là bạn có thể kiểm tra đối tượng và xử lý nó theo cách tốt nhất cho loại của nó

import json
from datetime import date

class Person(object):
    def __init__(self):Python save objects as json file
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

def serialize(obj):
    if isinstance(obj, date):
        serial = obj.isoformat()
        return serial

    return obj.__dict__

print(serialize(person))

kết quả

{"id": 1, "age": 25, "name": "John"}
  • chúng tôi đang nhập các mô-đun cần thiết
  • khai báo một lớp Người mới
  • tạo một thể hiện mới của lớp này
  • phương thức tùy chỉnh để kiểm tra xem nó có thể tuần tự hóa được hay không và trả về giá trị phù hợp

Python chuyển đổi đối tượng danh sách thành tệp JSON

Lưu một đối tượng python vào tệp JSON cũng rất dễ dàng

import json

class Person(object):
    def __init__(self):
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

#save to file
dt = {}
dt.update(vars(person))
with open("/home/test/person.txt", "w") as file:
    json.dump(dt, file)

kết quả

/nhà/kiểm tra/người. txt

{"id": 1, "age": 25, "name": "John"}

Nếu bạn muốn lưu danh sách các đối tượng bằng Python vào JSON, bạn có thể thực hiện bằng cách

json_string = json.dumps([ob.__dict__ for ob in list_objects])

nếu bạn xử lý các đối tượng không thể tuần tự hóa thì bạn chỉ cần làm

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
0

nơi list_objects là danh sách với các đối tượng của bạn

P. S. Ví dụ về mã đã được hỏi trong phần nhận xét bên dưới hoặc ví dụ đầy đủ về cách bạn có thể tuần tự hóa các lớp không thể tuần tự hóa

JSON là viết tắt của Ký hiệu đối tượng JavaScript. Mặc dù tên của nó chỉ ra rằng nó được liên kết với ngôn ngữ lập trình JavaScript, nhưng định dạng JSON độc lập với ngôn ngữ và thường được sử dụng trong nhiều ngôn ngữ lập trình khác nhau

Tệp JSON là gì?

Các tệp JSON thường được sử dụng để truyền dữ liệu giữa các máy tính. Chẳng hạn, khi tải xuống một tệp từ API, bạn thường cần xử lý các tệp JSON. Đây là một bài viết hay giải thích việc tải xuống một tệp bằng Python từ API

Sau đây là một ví dụ về tệp JSON

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
1

Các tệp lưu trữ dữ liệu ở định dạng JSON được gọi là tệp JSON. Các tệp này dựa trên văn bản, con người có thể đọc được và dễ xử lý – tất cả đều khiến chúng trở nên rất phổ biến

Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi một chuỗi thành JSON trong Python và cách tạo tệp JSON từ các đối tượng Python

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

Python có một thư viện tích hợp có tên là

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
20 cung cấp các phương thức đơn giản và hiệu quả để làm việc với các tệp JSON. Hãy xem qua một số ví dụ minh họa cách chuyển đổi một chuỗi thành JSON trong Python và ngược lại

Từ JSON đến đối tượng Python. khử lưu huỳnh

Sau đây là một chuỗi JSON

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
2

Chúng ta có thể sử dụng phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
21 của thư viện
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
20 để chuyển đổi chuỗi này thành đối tượng Python

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
6

Chúng tôi vừa chuyển đổi dữ liệu được mã hóa JSON thành một đối tượng Python. Quá trình này được gọi là deserializing. Đối tượng Python kết quả là một từ điển. Một từ điển Python bao gồm các cặp khóa-giá trị và chúng ta có thể dễ dàng truy cập các mục của nó bằng các khóa. Ví dụ: nếu chúng tôi muốn truy cập

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
23 trong từ điển
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
24, chúng tôi viết

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
9

Nếu chúng ta có một tệp JSON và muốn biến nó thành một đối tượng Python, chúng ta có thể sử dụng phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
25. Xem nhanh file JSON của “employee” ở đầu bài viết. Khối mã sau đọc tệp này và lưu nó vào từ điển Python

TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable
1

Bây giờ

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
26 là một đối tượng từ điển Python

Điều quan trọng là phải nhấn mạnh sự khác biệt giữa các phương pháp

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
28) và
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
21 của thư viện
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
20. Phương thức tải được sử dụng để tạo đối tượng Python từ tệp JSON, trong khi phương thức
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
21 chuyển đổi chuỗi JSON thành đối tượng Python

Từ đối tượng Python đến chuỗi JSON. tuần tự hóa

Giống như chúng ta có thể tạo đối tượng Python từ tệp JSON, chúng ta có thể chuyển đổi đối tượng Python thành chuỗi hoặc tệp JSON. Quá trình này được gọi là tuần tự hóa

Phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
61 chuyển đổi từ điển Python thành chuỗi JSON. Trong phần khử lưu huỳnh, chúng tôi đã tạo một từ điển có tên là
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
24. Nó có thể được chuyển đổi lại thành chuỗi JSON như sau

TypeError: <__main__.D instance at 0x99237ec> is not JSON serializable
9

Đầu ra là một chuỗi (chú ý các dấu ngoặc đơn xung quanh dấu ngoặc nhọn), vì vậy chúng ta không thể truy cập một cặp khóa-giá trị cụ thể như chúng ta làm với từ điển

Chuỗi rất đơn giản này không khó đọc. Tuy nhiên, các chuỗi JSON có thể dài hơn nhiều và có các phần lồng vào nhau. Đối với những trường hợp như vậy, phương pháp

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
61 cung cấp cách in dễ đọc hơn. Chúng tôi có thể in chuỗi này đẹp bằng cách đặt tham số thụt lề tùy chọn

import json

class Person(object):
    def __init__(self):
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

s = json.dumps(person.__dict__) 
print(s)
1

Phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
61 cũng có một tham số để sắp xếp theo khóa

import json

class Person(object):
    def __init__(self):
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

s = json.dumps(person.__dict__) 
print(s)
3

Các tệp JSON thường được sử dụng để tuần tự hóa (chọn), e. g. khi bạn muốn duy trì một số dữ liệu giữa các lần chạy ứng dụng của mình. Bạn có thể tìm hiểu thêm về tuần tự hóa đối tượng trong bài viết này

Tạo tệp JSON bằng kết xuất ()

Phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
61 chuyển đổi đối tượng Python thành chuỗi có định dạng JSON. Chúng tôi cũng có thể tạo tệp JSON từ dữ liệu được lưu trữ trong từ điển Python. Phương pháp để thực hiện nhiệm vụ này là
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
66

Hãy sử dụng phương pháp

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
66 để tạo tệp JSON. Chúng tôi sẽ sử dụng từ điển nhân viên mà chúng tôi đã tạo trong phần trước

import json

class Person(object):
    def __init__(self):
        self.name = 'John'
        self.age = 25
        self.id = 1

person = Person()

s = json.dumps(person.__dict__) 
print(s)
7

Thao tác này tạo một tệp có tên

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
68 trong thư mục làm việc hiện tại của bạn và mở nó ở chế độ ghi. Sau đó, chúng tôi sử dụng phương pháp
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
66 để tuần tự hóa một từ điển Python

Phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
66 nhận hai đối số vị trí. Đối tượng đầu tiên là đối tượng lưu trữ dữ liệu sẽ được tuần tự hóa (ở đây, từ điển Python). Cái thứ hai là tệp để ghi dữ liệu được tuần tự hóa. Tham số
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
91 là tùy chọn

In trong dòng lệnh

Phương thức

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
92 của thư viện
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
20 cho phép in các tệp JSON đẹp mắt trong dòng lệnh. Hãy thử nó trên tệp
import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
68 mà chúng tôi đã tạo trong phần trước

Bước đầu tiên là mở giao diện dòng lệnh. Sau đó, chúng ta cần thay đổi thư mục thành vị trí lưu tệp

import json

class C(): pass
class D(): pass

c = C()
c.what = "now?"
c.now = "what?"
c.d = D()
c.d.what = "d.what"

json.dumps(c.__dict__)
68

Lệnh sau sẽ in tệp JSON ở định dạng đẹp, rõ ràng

{"id": 1, "age": 25, "name": "John"}
6

Hình ảnh sau đây cho thấy giao diện của nó trong dấu nhắc lệnh của Windows

Các đối tượng Python có thể được chuyển đổi thành JSON không?

Tìm hiểu thêm về JSON và Python

Chúng tôi đã giới thiệu cách đọc và ghi các tệp JSON bằng Python. Thư viện json tích hợp giúp bạn dễ dàng thực hiện cả hai điều này. Một trong những ưu điểm của Python là sự lựa chọn phong phú của các thư viện bên trong và bên thứ ba giúp đơn giản hóa hầu hết các tác vụ

Nếu bạn đang học hoặc dự định học Python, bài học Học lập trình với Python của chúng tôi là một cách tuyệt vời để bắt đầu. Nó được thiết kế cho người mới bắt đầu và có 5 khóa học tương tác. Ưu điểm của việc học với một khóa học tương tác là bạn được thực hành viết mã thực tế;

HọcPython. com cũng cung cấp toàn bộ khóa học dành riêng cho Tệp JSON trong Python. Khóa học cũng tương tác và có 35 bài tập. Nếu bạn muốn thực hành các khái niệm mà chúng ta đã thảo luận trong bài viết này, thì khóa học này là dành cho bạn. học tập vui vẻ

Làm cách nào để chuyển đổi một đối tượng Python thành JSON?

Chuyển đổi đối tượng lớp thành JSON được thực hiện bằng cách sử dụng gói json trong Python. json. dumps() chuyển đổi đối tượng Python thành chuỗi json . Mọi đối tượng Python đều có một thuộc tính được ký hiệu là __dict__ và thuộc tính này lưu trữ các thuộc tính của đối tượng.

Làm cách nào để chuyển đổi một đối tượng thành JSON?

Chuyển đổi đối tượng Java thành JSON . create an object of the POJO class, set required values to it using the setter methods. Khởi tạo lớp ObjectMapper. Gọi phương thức writeValueAsString() bằng cách chuyển đối tượng POJO đã tạo ở trên. Truy xuất và in JSON thu được.

Làm cách nào để chuyển đổi danh sách đối tượng thành JSON trong Python?

Để chuyển đổi Danh sách Python thành JSON, hãy sử dụng json. hàm kết xuất() . Hàm dumps() lấy danh sách làm đối số và trả về Chuỗi JSON.

Làm cách nào để tuần tự hóa một đối tượng lớp thành JSON trong Python?

Sử dụng Phương thức toJSON() để tuần tự hóa JSON của lớp . Phương thức nối tiếp toJSON() mới này sẽ trả về biểu diễn JSON của Đối tượng. tôi. e. , Nó sẽ chuyển đổi Đối tượng Python tùy chỉnh thành chuỗi JSON.